如何从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
其实正是对标准输入的解释,才让这道题更有意义。
我想从标准输入中读取长度未知的字符流。我正在尝试逐个字符读取
#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
其实正是对标准输入的解释,才让这道题更有意义。