【发布时间】:2015-09-17 07:40:49
【问题描述】:
我想从标准输入中读取长度未知的字符流。我正在尝试逐个字符地读取
#include <stdio.h>
int main(void)
{
char ch;
do
{
scanf("%c",&ch);
//do some comparison of ch
}while(ch!='');
return 0;
}
帮我在while中写条件,这样我就可以正确读取输入而不进入无限循环
示例输入:
abcdefghijklmnop
【问题讨论】:
-
你的意思是如何存储你在内存中读取的未知大小的文件?因为阅读是一件容易的事。逐个字符读取效率低下(最好使用
getchar)。如果你不想强加大小限制,我相信最好做一个链表,分配一块内存,读取直到它被填满,然后链接一个新的块,直到文件完成。 -
您认为输入流的结束是什么?回车?还有什么?
-
@Amadan 这与文件无关
-
流。一样。 (实际上不是一回事,你知道文件的大小,所以我所描述的就不需要了。)除非你的流没有终止;在这种情况下,你应该认真思考当你可以停止倾听时你认为的重点是什么。如果您应该始终继续听,请分叉您的进程或撕掉一个线程。
-
如果你必须使用
scanf,你可以检查它的返回值——因为它有1个匹配的东西,它会在成功时返回1,在EOF或错误时返回feof(stdin) 和ferror(stdin)- 如while ( ( 0 == feof(stdin) ) && (0 == ferror(stdin) ) )