如何从c中的标准输入读取长度未知的字符流

How to read a stream of characters whose length is unknown from standard input in c

我想从标准输入中读取长度未知的字符流。我正在尝试逐个字符读取

#include <stdio.h>
int main(void) 
{
    char ch;
    do 
    {
        scanf("%c",&ch);
        //do some comparison of ch
    }while(ch!='');
return 0;
}

帮我把条件写在while中,这样我就可以正确读取输入,而不会进入死循环

示例输入:

abcdefghijklmnop

你的转义字符是错误的。 你想把所有东西都写在一行上吗?然后使用 '\n' 结束循环。

while (ch != '\n')

如果逐个字符写入,请使用一个字符退出序列(例如“@”)

while (ch != '@')

最简单的解决方案可能是这样

#include <stdio.h>
int main(void) 
{
    char ch;
    do 
    {
        ch = fgetc(stdin); 
        //do some comparison of ch
    }while( ch != EOF );

return 0;
}

不过话虽如此,问题陈述如下

read a stream of characters from standard input whose length is unknown

有点棘手。根据上面的程序,您可以使用 ctrl+d、EOF 或 运行 带有文件重定向的二进制文件

来停止它
./a.out < input.txt

其实正是对标准输入的解释,才让这道题更有意义。