发生的事情是它首先从 fp1 获取所有输入,然后从 fp2 获取输入。为什么会这样?不能在 while 语句中同时从 2 个不同的文件指针获取输入吗?
/*checks if 2 text files are identical */
#include <stdio.h>
int main(void)
{
FILE *fp1,*fp2;
char buf1,buf2;
int flag = 1;
fp1 = fopen("textfile1.txt","r");
fp2 = fopen("textfile2.txt","r");
/* putting them inside a while statement causes a logical error? why */
while(fscanf(fp1,"%c",&buf1) == 1 ||fscanf(fp2,"%c",&buf2) == 1)
{
printf("buf1: %c, buf2: %c\n",buf1,buf2);
if(buf1 != buf2)
{
flag = 0;
//break;
}
}
if(flag == 1)
printf("SAME");
else
printf("NOT SAME");
fclose(fp1);
fclose(fp2);
return 0;
}
最佳答案
您的 while 语句短路了。使用 OR (||
) 运算符时,如果第一个表达式为真,则不会执行第二个表达式。
我不完全确定你想用 OR (||
) 运算符实现什么,也许你实际上需要一个 AND (&&
)?
关于c - 为什么我不能 fscanf() 两个不同的文件并在一段时间内同时获取输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817674/