【发布时间】:2015-07-25 19:01:17
【问题描述】:
这让我发疯了我正在尝试制作一个简单的程序来使用以下代码复制任何类型的文件,但我得到的结果是出乎意料的(复制文件末尾的一两个额外字符?)。例如,如果我的原始文件包含This is an example,则复制的文件包含This is an exampleÿ
代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp,*fpp;
char pbuff, fname[32];
int i;
printf(" FILE NAME TO OPEN : ");
scanf(" %32s", fname);
fp = fopen(fname, "rb");
fpp = fopen("file", "wb");
if(fp==NULL)
{
printf("NO SUCH FILE. EXITING NOW.");
getch();
exit(1);
}
while(!feof(fp))
{
pbuff = fgetc(fp);
fputc(pbuff, fpp);
}
printf("SUCCESSFULLY CREATED!");
fclose(fp);
fclose(fpp);
getch();
return(0);
}
谁能帮我解决这个问题?我会非常感激的。
【问题讨论】:
-
feof() 在 while 循环中会产生问题,不要使用它,使用 fgets()。
-
你能说得更具体点吗?
-
是的 'while(!feof(fp))' 来自标题 :(
-
0)
" %32s"-->" %31s"1)int ch;while(EOF!=(ch = fgetc(fp)))fputc(ch, fpp);