#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
無論結果如何,結果都是1。爲什麼scanf總是返回1?
7
1
我已經使用scanf很多次了,從來沒有遇到過這種情況。這裏的交易是什麼?
#include <stdio.h>
int main() {
int days = scanf("%d", &days);
printf("%d", days);
return 0;
}
無論結果如何,結果都是1。爲什麼scanf總是返回1?
7
1
我已經使用scanf很多次了,從來沒有遇到過這種情況。這裏的交易是什麼?
這是正確的,因爲scanf()
返回成功匹配和轉換元素的數量。考慮你的情況正確的輸入,您的每一次輸入經過轉換,所以你能看到值1
注意點,scanf()
不返回掃描的價值本身,它存儲在傳遞的值論據。
引用C11
,章§7.21.6.4
[...]的
scanf
函數返回 號碼輸入項目的分配,其可以是少於規定的,或甚至零,在該 早期匹配失敗的事件。
謝謝。字符數限制 – user3643077
@ user3643077:您必須在其他地方以不同的方式執行此操作。 –
scanf的返回類型是指示它是否成功讀取一個整數。
這將做你期待什麼
#include <stdio.h>
int main() {
int days = 0;
scanf("%d", &days);
printf("%d", days);
return 0;
}
你剛剛從'scanf'功能**返回碼**重挫days'的'值。 – t0mm13b
'scanf'的文檔不清楚嗎? – Olaf
確實要閱讀手冊頁的時間? –