编程控制台错误

时间:2016-07-11 16:49:16

标签: c file-io

#include<stdio.h>
void  main()
{
    do
    {
        char i;
        FILE *f,*q;
        f=fopen("E:\\txt.txt","w");
        while((i=getchar())!='\n')
        {
            fputc(i,f);
        }
        fclose(f);
        q=fopen("E:\\txt.txt","r");
        while((i=fgetc(q)!=EOF))
        {
            printf("%c",i);
        }
    } while(1);
}

它应输出从键盘按下的内容,但输出到我输入的相同字符长度的问题框。并且文本在那里我以正确的形式指定。以下是运行程序后的输出。

enter image description here

1 个答案:

答案 0 :(得分:2)

此行中括号的放置是错误的:

while ((i = fgetc(q) != EOF)) {

由于运算符优先级(在C中,赋值运算符具有最低优先级),这相当于

while (i = (fgetc(q) != EOF));

换句话说,您每次都会将TRUE分配给i,直到您到达文件末尾。如果你将它显示为char,你会得到一个有趣的不可打印的角色,所以你得到一系列有趣的角色,但长度正确。

应该是:

while ((i = fgetc(q)) != EOF) {

然后你应该得到你想要的输出。