difference between error control coding and channel coding
Both of them help in correcting the errors because of the channel.


No, not really. Unless you push the sense of what 'help' means.

Channel coding is used to adapt the channel so that it can send digital information. The channel might be varying, or bandpass, or noisy. Channel coding is used to make sending of digital data possible, with a reasonable error rate. For instance, with a transformer-coupled channel which does not allow DC, Manchester Coding may be used to avoid saturating the transformers.

Forward Error Coding (FEC) is used to add redundancy to the transmitted information, so that the inevitable errors in the raw data can be corrected.

Obviously some types of channel produce some errors, and others other types, so it's sensible to choose a form of FEC that matches the channel for best performance. For instance the CD playback channel can lose thousands of bits in a burst, due to scratches, so the FEC is designed to distribute a coded frame over a significant time duration, so that not all of it lost at the same time.