我正在讀整數scanf
,同時檢查scanf
的scanf
讀數位數,第一個輸出總是正確的,但之後輸出又增加了一個。即scanf
爲第二個scanf
讀取最後的"\n"
。scanf%n給出錯誤的輸出
我知道這種問題scanf
和char
是scanf("%c",&cval)
--->到scanf(" %c",&cval)
留下一些小的空間,以避免scanf函數讀取行的末尾。但整數是什麼?
我已經看到了一些問題,在這裏Link here,他們都似乎認爲scanf()
是"retarted"
和fget()應始終使用..真有那麼和它的好處是避免它的項目?我的意思是使所有這類錯誤無效,並且有辦法阻止這種情況發生。 我必須爲此使用fget()
還是有辦法在scanf()
中修復此問題。歡迎所有評論,並感謝您的時間。我只想知道是否有辦法解決它,我知道如何使用%n。
#include <stdio.h>
int main(void) {
int i =0 ,byte_count = 0,val;
printf("Enter a number: ");
scanf("%d%n",&val,&byte_count);
while (i < 3){
printf("byte count is: %d\n",byte_count);
scanf("%d%n",&val,&byte_count);
i++;
}
return 0;
}
也許與複製[什麼是n的'sscanf的代表(S,「%d%N」,&I,N)'?](http://stackoverflow.com/questions/13199693/what -does-the-n-stand-for-in-sscanfs-dnin) –
@ J.Piquard我沒有說我不知道「%n」代表什麼,當然也不是重複。我知道%n做了什麼。 –
首先你可以檢查'scanf()'的返回值是否等於2。 –