字元輸入,輸出問題

2021-07-04 12:50:49 字數 973 閱讀 4640

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...