【发布时间】:2011-12-02 00:00:09
【问题描述】:
我编写了以下代码将文本文件复制到另一个:
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 会发生什么?
请帮忙...
提前感谢您的反馈。
【问题讨论】: