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

时间:2015-09-17 07:40:50

标签: c input char c-strings

我想从标准输入读取长度未知的字符流。我试图按字符逐字阅读

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

帮助我写入条件,以便我可以正确读取输入而无需进入无限循环

示例输入:

abcdefghijklmnop

2 个答案:

答案 0 :(得分:0)

你的逃脱角色是错误的。 你想在一条线上写下所有内容吗?然后使用'\ n'结束你的循环。

while (ch != '\n')

如果逐个字符编写,请使用一个来退出序列(例如'@')

while (ch != '@')

答案 1 :(得分:0)

可能最简单的解决方案是

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

return 0;
}

但话虽如此,问题陈述如下

  

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

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

./a.out < input.txt
事实上,标准输入的解释是使这个问题更有意义的原因。