当C 中不再有STD输入时,我该如何完成程序完成

How can I make my program finish when there is no more std input in C++?

本文关键字:何完成 程序 不再 输入 STD      更新时间:2023-10-16

我正在使用算法,当我不再输入该程序时,我被要求打印"退出"。

我正在使用

char c;
while(c = getchar()){...} 

因为我需要查找'n'字符和数字。

因此,我复制样本输入并将其粘贴到我的程序上以测试它,但是它一直在等待另一个输入,因此,当我提交时,我得到了时间限制

ps:我不能使用多线程。

您可以在getchar()返回EOF时停止,如:

int c;
while ((c = getchar()) != EOF) {...}

请注意,c需要声明为int,而不是char

要使您的程序更加c - 喜欢,在循环中使用操作员>>代替getchar,这样:

char c;
while (cin >> c) {...} 

getchar()返回int,而不是char。特别是,它在文件末端返回EOF,EOF通常为-1。因此,如果将其存储在字符中,它将永远不会比较等于EOF。

int c;
while ((c = getchar()) != EOF) {

您是从文件中读取的吗?如果是这样,getchar()将返回eof:http://www.cplusplus.com/reference/cstdio/cstdio/getchar/

so

    int c=getchar();
    while (c != EOF) {...}

应该工作。