我正在从stdin读取数组输入[],但它在读取输入后永远不会离开循环并且一直期待更多输入。我究竟做错了什么?
char input[1000];
while(scanf("%s",input)==1){
printf("%s\n",input);
}
答案 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