qianmubanpingcu 2023-01-25 18:26 采纳率: 83.3%
浏览 28
已结题

学习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一直在这上面报错。

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-25 18:51
    关注

    回答不易,回答有用请你采纳,点击回答右侧采纳即可!
    错误是由于你在比较字符和字符串("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系统中停止控制台窗口关闭,如果你在其他系统中运行请删除这句话。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月27日
  • 已采纳回答 1月25日
  • 创建了问题 1月25日