最近在学C语言文件那一章的时候遇到了一个不明白的问题,请大家帮忙看一下。 file1.txt是磁盘中已经存在的一个文件,现将其内容复制到另一文件file2.txt中,程序是这样的: #include<stdio.h> main() { FILE *in,*out; char c,infile[20],outfile[20]; printf("Please input infile name:"); scanf("%s",infile); printf("Please input outfile name:"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("cannot open the file!\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("cannot open the file!\n"); exit(0); } while(!feof(in)) { c=fgetc(in); fputc(c,out); } fclose(in); fclose(out); } 在输入file1.txt回车,file2.txt回车后,发现file2文件内容的末尾多出来了一个奇怪的符号, 若将while那一部分修改如下,便不会再有那个奇怪的符号出现了: c=fgetc(in); while(c!=EOF) { fputc(c,out); c=fgetc(in); } 请问这是怎么回事啊? 问题在这里 在文件尾的时候,这两句话一样会执行 c=fgetc(in); // 此时已经是EOF了,再输出,就是个乱码 fputc(c,out); |
|