簡體   English   中英

Scanf函數不等待字符串輸入

[英]Scanf function not waiting for string input

在此代碼中,為前兩個scanf函數提供輸入后。 輸出將自動顯示。 我了解了scanf這種形式的字符串。 但是它並不專門為此等待。 有什么建議么 ?

#include <stdio.h>

int main()
{
    int p;
    int q;
    char kog[50];

    scanf("%d",&p);
    scanf("%d",&q);
    scanf("%50[^ ]s",kog);

    printf("%d %d %s",p,q,kog);

    return 0;
}

你是什​​么意思:

scanf("%50[^ ]s",kog);

如果要掃描直到打印出新行,請嘗試:

scanf(" %49[^\n]",kog);

順便說一句,寬度說明符1總是小於字符串的大小。 這是為了避免覆蓋終止的空字符。 因此,用49代替50作為寬度說明符。

來自cppreference

如果使用寬度說明符,則僅匹配最大寬度。 除匹配的字符外,還總是存儲一個空字符(因此參數數組必須至少可以容納width + 1個字符)。

另外,請注意,掃描集轉換已在[ ]處完成。 結構是"%49[…]" ,僅此而已。 常見的誤解是掃描集后面應加上s

並在scanf()中的%之前提供一個空格,以避免消耗上一個條目末尾輸入的換行符。

暫無
暫無

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

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