[英]C scanf skipping second time
我已經讀過有關在scanf前面放置空格的信息,但是我嘗試的所有方法均無效。 我試圖讀取兩組三個整數。 第一個scanf可以正常工作,而第二個則不能。 我很沮喪,因為我嘗試在論壇中看到的所有內容都在空格或換行符前加了空格,但沒有任何效果。
有問題的代碼:
// Get user input for the two dates:
printf("Enter Date #1 in format mm:dd:yyyy \n");
scanf("%i:%i:%i\n", &D1.month, &D1.day, &D1.year);
printf("Enter Date #2 in format mm:dd:yyyy\n");
scanf("%i:%i:%i", &D2.month, &D2.day, &D2.year);
我試圖將空格和換行符分開放置在一起,試圖讀取一個虛擬變量字符以查看是否可行。 為什么在第二個scanf中不能輸入任何數據?
輸出顯示為:
Enter Date #1 in format mm:dd:yyyy
09:06:1995
Enter Date #2 in format mm:dd:yyyy
The number of days between 0:1529117256:94769206 and 9:6:1995 is -1783102426
我發表了一篇新文章,因為我看到了有關字符而不是整數的解釋。
當您將%i
與scanf
:
scanf("%i",&inp); //INPUT 09 AS MONTH OR ANYTHING
輸入為09
,它將以前綴0
或前導零作為八進制輸入,因此inp
的值將無效,因為9
不是有效的八進制數字,八進制數字為0,1,2,3,4,5,6,7
。
就像使用%d
時一樣,輸入09
不會轉換為八進制 ,讀取的值為9
。
除此之外,我還想提出一些建議: 遠離scanf
如user3121023的注釋(1)所述,將兩者都更改為“%d”而不是“%i”修復了該問題。 我不清楚為什么。
現在的代碼是:
// Get user input for the two dates:
printf("Enter Date #1 in format mm:dd:yyyy \n");
scanf("%d:%d:%d", &D1.month, &D1.day, &D1.year);
printf("Enter Date #2 in format mm:dd:yyyy\n");
scanf("%d:%d:%d", &D2.month, &D2.day, &D2.year);
此外:
"%d:%d:%d\n"
將無法正常工作。 不要在您的scanf中輸入'\\ n'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.