簡體   English   中英

C while 循環一旦輸入就不會停止運行

[英]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個問題:

  1. s不是該特定說明符的一部分,它應該只是%[^\\n]

  2. 該說明符將\\n換行符留在輸入緩沖區中。

    你的循環將進入一個無限循環,因為那里總是有東西要讀,但它不能被解析,應該保留在緩沖區中。

    擺脫它的一個簡單方法是在說明符之前放置一個空格:

     scanf(" %[^\\n]", input); ^ |

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM