1 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
輸入stdin上一個(gè)字符后出現(xiàn)的換行字符int不會(huì)被最后一次調(diào)用所占用scanf()。因此,scanf()在for循環(huán)之后對(duì)to的調(diào)用將占用換行符,并且無需用戶輸入任何內(nèi)容即可繼續(xù)進(jìn)行。
要進(jìn)行糾正而不必添加其他scanf()調(diào)用,可以在循環(huán)之后的format說明符" %c"中使用。這將跳過所有前導(dǎo)空格字符(包括換行符)。請(qǐng)注意,這意味著用戶將不得不輸入換行符以外的其他內(nèi)容來結(jié)束程序。scanf()forscanf()
另外:
檢查的結(jié)果scanf()以確保它實(shí)際上為傳入的變量分配了一個(gè)值:
/* scanf() returns number of assigments made. */
if (scanf("%d", &userValue) == 1)
這是一個(gè)賦值(并且永遠(yuǎn)是正確的):
if (a = 1){ /* Use == for equality check.
Note 'a' could be removed entirely and
replace with: if (isPrime(x)) */
- 1 回答
- 0 關(guān)注
- 477 瀏覽
添加回答
舉報(bào)