c語言問題求教

時間 2021-11-23 07:07:41

1樓:貌似風輕

%c是讀取乙個字元

%s是讀取乙個字串

這裡的%1s是只讀取輸入的字串的第乙個字元,其實作用和%c差不多

在你的程式裡,之所以會出現差別是受到了前面**的影響

前乙個輸入scanf("%d", &a); 這裡你輸入了乙個數字和乙個回車符

之後如果你使用scanf("%c", &b);讀字元,那麼程式會發現輸入流裡已經有乙個字元(回車符),所以在你還沒輸入的時候程式已經讀了,b='\n',這時printf("character: %c\n", b);就是相當於執行了個換行操作

如果使用scanf("%1s", &b);因為%s是不讀取回車符的,所以這個scanf沒有讀前面的回車,也就是他的讀取還沒完成,所以等待你的輸入,輸入然後顯示沒問題

這樣才造成了你看到的「後者能顯示,前者不能」

你可以把前後的**讀刪掉試試,就知道了

或者在 scanf("%d", &a);後跟一句getchar() 把回車符提前讀了,那麼用scanf("%c", &b);就也可以成功

2樓:菊隱逸者也

%c輸入乙個字元,%s輸入的是一串字元組成的字串。加了1也就相當於1個字元。使用%s就不用加&號了。你試試。

3樓:

b要是乙個字串

就只能用%1s輸出他的第乙個字元

求教c語言程式設計問題,求教c語言程式設計問題

include void main if m n t n else t m for k t k 1 k if m k 0 n k 0 如上 include int main if n 0 printf n else if n 0 printf 兩數的最大公約數為 0 n兩數的最小公倍數為 0 n e...

求教一道c語言問題,求教一道C語言問題

while str i getchar n 這裡的問題,根本就不能實現將鍵盤中輸入的數字存入str i 中的功能,可以改為 while i 測試結果 建議 可以將列印資料的地方加個空格,不然顯示好難看 虹灬穎鳶 int n,str 80 i 0,j 0,min,max,temp1,temp2 cha...

c語言求教,c語言求教!!!!!

0 是結束符。列印在螢幕上什麼也沒有 通常代表c風格字串的結束 0 是字元。列印出來你就看見是0 其次 0 的asc 碼是0,字元 0 的asc碼是 48.比如 0 和 0 用數字的方式列印就分別是 0 和 48 完全不同的2個東西 void squeeze char s,char c s j 0 ...

c語言程式設計求教,C語言程式設計(求教)

你的問題呢?學習c語言要在理論的基礎上勤加實踐練習,遇到不會的問題,可以發布到網上,大家會幫助你解決的 就不好好學習,上這上面問作業 c語言程式設計 include define n 10 void insert int list,int n,int x void main 編寫程式,求10 用c語...

求教c語言中的函式指標問題,C語言有關函式指標的乙個題目,看不懂,求解答

施瓦辛格 pite ret pite taskfunction pite message msg unsigned char pite taskfunction pite message msg 上邊是函式指標宣告的一種 type pointer parameter list pointer 為函式...