学习c语言的时候遇到了一个编译问题

编译问题
F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c: In function 'main':

F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c:6:29: warning: comparison between pointer and integer
while ((ch = getchar()) != "EOF"))
^~
F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c:6:38: error: expected statement before ')' token
while ((ch = getchar()) != "EOF"))
^

生成已完成,但出现错误。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c: In function 'main':

F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c:6:29: warning: comparison between pointer and integer
while ((ch = getchar()) != "EOF"))
^~
F:\Codefield\CODE_C\C_Single\exercise\string_wenkai\2_1.c:6:38: error: expected statement before ')' token
while ((ch = getchar()) != "EOF"))
^

生成已完成,但出现错误。

我不知道该咋写这玩意
#include"stdio.h"
#include"stdlib.h"
int main(int argc, char const *argv[])
{
    int ch;
    while ((ch = getchar()) != EOF))
    {
        putchar(ch);
    }
    system("pause");
    return 0;
}

理论上(ch = getchar()) != "EOF")这玩意可以给出一个值来使得while成立,但是vscode一直在这上面报错。

回答不易,回答有用请你采纳,点击回答右侧采纳即可!
错误是由于你在比较字符和字符串("EOF")造成的。应该改成 (ch = getchar()) != EOF。EOF 是一个特殊的常量,表示文件结尾。它是一个宏定义,通常为 -1,在 <stdio.h> 中定义。你在while语句中有一个多余的右括号,需要删除,否则会编译错误.。

while ((ch = getchar()) != EOF)


修改后的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
int ch;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
system("pause");
return 0;
}

修改了 EOF 并删除了多余的右括号应该就能正常编译并运行了。这段代码会一直读取输入直到文件结尾(EOF),并将读入的字符输出到屏幕上。

其中 system("pause") 这句话是在windows系统中停止控制台窗口关闭,如果你在其他系统中运行请删除这句话。

去掉第6行EOF后面的右括号试试,这个右括号多出来了,修改如下:

#include"stdio.h"
#include"stdlib.h"
int main(int argc, char const *argv[])
{
    int ch;
    while ((ch = getchar()) != EOF)
    {
        putchar(ch);
    }
    system("pause");
    return 0;
}

img