2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
scanf("%c", &flag);
輸入 : y 再回車(chē)沒(méi)反應(yīng)?
可能是在前面的
input(num,a);
count(a);
sort(a,order);
中存在有緩沖,因?yàn)?c不會(huì)跳過(guò)空格等空字符,而%s是會(huì)跳過(guò)的,這也許是唯一的差別。
解決辦法:
在scanf("%c", &flag);前清空緩存
fflush(stdin);
然則也不清楚是不是這個(gè)原因,
你完全可以打印一下flag的碼值來(lái)調(diào)試一下嘛。
你可以試一下,多年未動(dòng)C的飄過(guò)。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
原因是在input函數(shù)里面有接受用戶輸入的動(dòng)作,而輸入一定是以回車(chē)結(jié)束,那么這個(gè)回車(chē)就會(huì)殘留在緩存中,而當(dāng)你的scanf讀取flag的時(shí)候,程序會(huì)自動(dòng)獲取前面的那個(gè)回車(chē)符號(hào),這就是用%c會(huì)自動(dòng)跳過(guò)的原因,而用%s的話,程序就會(huì)等待下一行輸入,回車(chē)符號(hào)并不會(huì)被接收,建議在scanf("%c", &flag);修改為:
fflush(stdin); //清空緩存
scanf("%c", &flag);
添加回答
舉報(bào)