c - 为什么我不能 fscanf() 两个不同的文件并在一段时间内同时获取输入?

标签 c file text scanf

发生的事情是它首先从 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/

相关文章:

c - GTK+ 2 改变GtkCheckButton的标签颜色

c - 如何在 sprintf 中写一个没有警告限制的字符串?

python - 在这种情况下是否需要关闭文件?

css - 文本的背景颜色(仅)

c++ - 从包含多行的文本文件中读入 float 变量的代码

c - "*** stack smashing detected ***"带文件读写

在c中将struct转换为char数组

C fopen 不新建文本文件,返回null,错误码2

java - 将文件转换为字节数组再转换为字符串的更有效方法

VB.Net从包含特定字符串的文本文件中返回所有行