[英]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.