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

时间:2018-01-14 02:49:35

标签: c scanf

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

由于SELECT customer.name, orders.orderID, orders.date, products.name, products.price FROM orders INNER JOIN customer ON order.userID = customer.userID INNER JOIN products ON orders.productID = products.productID WHERE customer.userID = ? 返回**成功读取的元素数,因此必须找到一种方法使其无法读取scanf()。一种常见做法是使用EOF结束输入,在Windows控制台中为%s然后Ctrl-Z,在Unix终端上为Enter。阅读EOF后Ctrl-D将返回scanf(),当然不是1,然后循环正常退出。

或者,您可以在代码中使用自定义终止字符串:

EOF