こんにちは私はCで簡単なコピーファイルプログラムを持っていましたが、2番目の方法を使用したときに宛先ファイルで異なる出力が得られる理由を説明できません。forループを使用した正しい出力:
I am the worst programmer in the world!
:D
And this is bla bla bla bla
more bla bla bla...
ただし、whileループを使用すると、EOFでランダムな文字が生成されます。
I am the worst programmer in the world!
:D
And this is bla bla bla bla
more bla bla bla...
コードは
int main()
{
int i;
char ch;
create_files();
FILE *src = fopen("best.txt", "r");
FILE *dst = fopen("copied.txt", "w");
for(i=getc(src); i!=EOF; i=getc(src)) //correct copy
{
putc(i, dst);
}
/* while(!feof(src)) //woot?
{
ch=fgetc(src);
fputc(ch,dst);
}*/
fclose(dst);
fclose(src);
return 0;
}
void create_files()
{
FILE *fp;
fp = fopen("best.txt","w");
fprintf(fp,"I am the worst programmer in the world!\n:D\n And this is bla bla bla bla\n more bla bla bla...\n");
fclose(fp);
}
私はfputcまたはputcとfgetcまたはgetcの両方を使用しましたが、それでも同じです。何か忘れましたか?