Я написал следующий код для копирования текстового файла в другой:
FILE *fpr, *fpw;
int ch;
fpr = fopen("M.txt","r");
fpw = fopen("P.txt","w");
if(fpr == NULL)
printf("File open failed!");
else
{
while(1)
{
ch = fgetc(fpr);
if(ch == EOF)
break;
fputc(ch, fpw);
}
fclose(fpr);
fclose(fpw);
printf("Successfully copied!");
}
Он работал отлично.Затем я изменил int ch
на char ch
, это также сработало для меня.Но когда я использовал следующий код для копирования файла .exe, копирование файлов работает некорректно.
FILE *fpr, *fpw;
char ch;
fpr = fopen("M.exe","rb");
fpw = fopen("P.exe","wb");
if(fpr == NULL)
printf("File open failed!");
else
{
while(1)
{
ch = fgetc(fpr);
if(ch == EOF)
break;
fputc(ch, fpw);
}
fclose(fpr);
fclose(fpw);
printf("Successfully copied!");
}
Я изменил char ch
на int ch
, тогда он работает нормально!Почему это происходит с двоичными файлами, а не с текстовыми?Что происходит, когда char ch
был использован в случае двоичного?Пожалуйста, помогите ... Спасибо за вашу обратную связь заранее.