[英]How to use scanf in a loop to get a char* array in c
我想使用scanf
獲得一個char
數組值。 我使用以下代碼:
// get first array
printf("first length:\n");
scanf("%d", &f_l);
printf("first number:\n");
for(i=0 ; i<=f_l ; i++) {
scanf("%c", &first[i]);
}
//start test
printf("first number is:\n");
for(i=0 ; i<=LEN ; i++) {
printf("(%c | %d)", first[i],i);
}
但是,當我打印數組時,我首先找到一個\\n
( first[0]
),而其他字符從place[1]
開始! 為什么會這樣,以及如何解決?
這是因為當對f_l
進行scanf()
時,緩沖區中保留了一個'\\n'
。
使用尾隨空格,它應該可以工作
for(i=0 ; i<=f_l ; i++) {
scanf(" %c", &first[i]);
}
在您的代碼中
scanf("%c", &first[i]);
讀取並存儲先前輸入的換行符( \\n
)。 你需要改變
scanf("%c", &first[i]);
至
scanf(" %c", &first[i]);
^
|
為了避免先前的ENTER鍵生成的先前輸入的換行符( \\n
)。 %c
之前的前導空格將導致scanf()
忽略任何數量的前導空白字符(包括換行符),並讀取第一個非空白字符(預期輸入)。
也就是說,直接使用用戶提供的值對預定義數組進行數組索引可能會出現問題。 至少要檢查用戶輸入的值是否小於定義的數組大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.