いろいろ調べたのですが どうしてもわからないところがあるので
教えていただけないでしょうか

バイナリファイルのコピーとテキストファイルのコピーの違いなんですが
ファイルをコピーするとき
バイナリ・テキストファイル両方コピーできるようにするならば

FILE *filename,filename2
char ch;

from=fopen(filename,"r");
to=fopen(filename2,"w");
while(!feof(from)){
ch=fgetc(from);
fputc(ch,to);
}
fclose(from);
fclose(to);


で出来ると思うのですが、なぜchar型に代入しているのにもかかわらず
バイナリがコピーできるかがわからないんです
確かchar型は-127〜127までの数しか扱えないとおもうのですが
バイナリは日本語を含めると255くらいまでの数がでてくるはずだとおもうのですが
この理由がさっぱりわかりません

お分かりになるかた教えてはいただけないでしょうか