代码中的while循环是这样写的:
while (fscanf(fa, "%c", &ch) != EOF) {
fprintf(fc, "%c", ch);
if (fscanf(fb, "%c", &ch) != EOF) {
fprintf(fc, "%c", ch);
}
}
若代码中的while循环按照这样的方式来写的话:
while(!feof(fa))
{
ch = fgetc(fa);
fputc(ch,fc);
if(!feof(fb)) {
ch = fgetc(fb);
fputc(ch,fc);
}
}
看似好像没有问题,但是实际上是会出错的,会出现合并之后的字符串中有多余的空格的情况。这是因为feof的判断具有滞后性,feof 这个函数,是去读标志位(flag)判断文件是否结束的。即在读到文件结尾的时候再去读一次,标志位(flag)才会置位,此时才会判断文件处理为结束状态,文件到结尾。所以会多写入一个空格,如果用于打印,则会出现多打一次的的现象。