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"))
^
生成已完成,但出现错误。
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;
}