我正在研究算法,我被要求打印" QUIT"当没有更多的程序输入时。
我正在使用
char c;
while(c = getchar()){...}
因为我需要查找'\n'
个字符和数字。
所以我复制了示例输入并将其粘贴到我的程序上进行测试,但是它一直在等待另一个输入,因此当我提交它时,我得到超出时间限制。
PS:我不能使用多线程。
答案 0 :(得分:3)
您可以在getchar()
返回EOF
时停止,如下所示:
int c;
while ((c = getchar()) != EOF) {...}
请注意,c
需要声明为int
,而不是char
。
要使程序更像C ++,请在循环中使用运算符>>
而不是getchar
,如下所示:
char c;
while (cin >> c) {...}
答案 1 :(得分:0)
getchar()
返回一个int,而不是char。
特别是,它在文件末尾返回EOF,EOF通常为-1。因此,如果将其存储在char中,它将永远不会与EOF相等。
int c;
while ((c = getchar()) != EOF) {
答案 2 :(得分:0)
你是从文件中读书吗?如果是,getchar()
将返回EOF:http://www.cplusplus.com/reference/cstdio/getchar/
所以
int c=getchar();
while (c != EOF) {...}
应该有用。