[英]How to stop a C while loop at once when we keyboard input without going on to the next step?
[英]C while loop does not stop running once input is made
我正在嘗試創建一個反復要求用戶輸入的程序。 但是,在這種情況下,程序只會繼續打印"Enter your input"
直到我第一次輸入內容后崩潰為止。
#include <stdio.h>
int main() {
while (1) {
char input[100];
printf("Enter a input: ");
scanf("%[^\n]s", input);
}
}
您要求scanf()
讀取所有內容,但不包括結束用戶輸入的換行符。
因此,換行符保留在輸入緩沖區中。 然后在對scanf()
后續調用中,仍然不會從輸入緩沖區讀取換行符,從而阻止scanf()
讀取任何新輸入。
您需要從輸入緩沖區中讀取該換行符,以便對scanf()
的后續調用可以讀取用戶的下一個輸入。
在:
scanf("%[^\n]s", input);
有2個問題:
s
不是該特定說明符的一部分,它應該只是%[^\\n]
。
該說明符將\\n
換行符留在輸入緩沖區中。
你的循環將進入一個無限循環,因為那里總是有東西要讀,但它不能被解析,應該保留在緩沖區中。
擺脫它的一個簡單方法是在說明符之前放置一個空格:
scanf(" %[^\\n]", input); ^ |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.