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



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

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

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

样本输入:

abcdefghijklmnop

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

#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

实际上,标准输入的解释使这个问题更有意义。

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

while (ch != 'n')

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

while (ch != '@')

最新更新