2007-11-23 23:03
yhy19820816
|瀏覽 0 次
scanf("%s%c");把字串輸完就退出了,為什麼他們在一起時,單個字元輸不進來?
scanf("%s %c")這樣就輸進來了,我不太懂,為什麼他們組合的時候必須加乙個明確的分隔符?scanf("%d%f%d%c")沒有分隔符,但輸入都是正常的啊.
scanf("%c%c")也存在同樣的問題,我如果想輸入單個字元a和b,必須要在scanf函式裡加乙個明確的分隔符.我不懂,這到底為什麼?請高手指點下.不加為什麼不行?
2007-11-24 09:41
#高質回答巔峰之戰「瘋狂攀岩」火熱開啟!#
提問者採納
我來說下標準答案吧首先你寫的不規範,
正確應該是這樣。
char str[100];
char chr;
scanf("%s%c", str,&chr);
可能你只是覺得表達清楚意思就行了。
然後再說為什麼會向你說的這樣
你輸入乙個字串賦值給str,然後按回車或者空格來結束,以輸入下乙個字元賦值給chr,你知道不,你按空格或者回車也是字元啊,所以它就把你輸入的空格或者回車賦給了chr字元了。
空格的ascii碼是32,回車好像是13或者20。
明白了不?
如果你中間加乙個空格,輸入完第一字串後,按空格,他會按格式賦值,因為scanf("%s %c"); 中間有乙個空格,會吸收這個空格,因此會在你輸入空格後的下乙個字元賦給字元chr。
scanf("%d%f%d%")
像這樣的中間的空格或者回車不會被下乙個變數吸收,具體你可以看書上的定義
scanf("%c%c")這樣的,你輸入ab,然後他把a賦給第乙個,a賦給第二個,沒問題。
但是你輸入a後,再空格或者回車,他就會把空格或者回車賦給第二個字元。
多次輸入輸出問題
eof初見面,鍵盤快取區,if迴圈的逗號表示式 1 可嘗試用eof來作為迴圈結束標誌,eof在windows中為ctrl c 在 unix中一般是ctrl c,說的簡單一點也就是,只要你不在windows系統中使用ctrl c,迴圈就會一直執行,不會出現 按任意鍵繼續 表示編譯結束 2 並且要麼明確...
輸入輸出問題彙總
8.20嗶哩嗶哩題目遇到的問題 輸入一串字串 中間可能存在空格 怎麼把它儲存到乙個string中。string line getlin cin,line 輸入未知數目的數字,怎麼給存入陣列中?123,23,123,169,123,首先要用字串getline來儲存,把一行資料給存到字串中,然後從字串分...
C 檔案輸入輸出問題
此函式 唯一形參跟返回值都是istream型別。該函式應該一直讀取直到檔案結束為止,還應該將讀取內容輸出到標準輸出,最後,重新設定流使其有效,並返回流。istream get istream in int val while in val,in.eof if in.bad throw std run...