C语言fgetc()函数读到的内容异常(为[]})

问题遇到的现象和发生背景

C语言fgetc()函数读到的内容异常(为[]})

用代码块功能插入代码
#include<stdio.h>
int main()
{ FILE* fp;
  char ch;
  fp=fopen("D:/AB.txt","r");
    while (ch=fgetc(fp)!=EOF)
    {
        printf("%c",ch);
       
    }
    fclose(fp);
    system("pause");
}

img

运行结果及详细报错内容

img


(现在应该是四个[],改了下程序)

我的解答思路和尝试过的方法

可能和fgetc每次读一个字符有关


#include<stdio.h>
int main()
{
    FILE* fp;
    char ch;
    fp = fopen("D:/AB.txt", "r");
    while ((ch = fgetc(fp))!= EOF)
    {
        printf("%c", ch);
    }
    fclose(fp);
    system("pause");
}

while循环的条件中有一些问题。你正在将fgetc的返回值赋值给ch,然后比较ch是否等于EOF。这是不正确的,因为赋值运算符的优先级低于比较运算符。这意味着在比较之前,fgetc会被先调用。

#include<stdio.h>
int main()
{
FILE* fp;
char ch;
fp=fopen("D:/AB.txt","r");
while ((ch=fgetc(fp))!=EOF)
{
printf("%c",ch);
}
fclose(fp);
system("pause");
return 0;
}

另外,在while循环体中再次调用fgetc是不必要的,因为每次循环都会调用一次fgetc。