c:用 while(scanf()==1) 读取输入不会离开循环

标签 c scanf

我正在从标准输入读取到数组输入[]中,但它在读取输入后永远不会离开循环,并一直期待更多输入。我究竟做错了什么?

        char input[1000];
        while(scanf("%s",input)==1){
            printf("%s\n",input);
        }

最佳答案

您期望什么,您如何尝试终止它? scanf("%s", input) 始终等待输入,并且如果 stdin 为生命,则始终返回 1,它会跳过空格并匹配第一个没有空格的字符序列。请仔细阅读说明书。

如果您想继续使用 scanf,那么您应该提供一个特殊的字符串来打破循环。

关于c:用 while(scanf()==1) 读取输入不会离开循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48246276/

相关文章:

c - Linux block 设备驱动程序请求排序 - RaW?

C 在链表开头插入元素

c - c sscanf 中的段错误

无法从 C 中的文本文件中提取值

stdin - 替换文件的标准输入

c - 将 float 输入读取为 int 并无限循环

使用 struct 和 scanf 的 C 程序产生错误 : expected expression before ‘ROBOT’

c - 同一程序的不同启动过程中的多个(随机选择)输出。 fscanf'ing 时添加的随机字符

c - 初始化指向 const 字符串的指针数组结构

c - 从文本文件中逐字符读取多行时出现段错误