回覆列表
-
1 # IT瘋子也
-
2 # EXCEL進階課堂
題主,你好。有你的問題來看,你應該是C語言的初學者。同時你也是一個很愛鑽研和問原因的人。相信你保持這樣的狀態的話,很快你的C語言就能入門了。
你出現的這個問題,也是我的學生經常會出現的問題。我就從問題原因和解決辦法兩方面講一下。
第一:問題原因分析首先請你觀察你問題配圖當中的兩個地方:他們都是逗號,這兩個逗號有什麼不一樣的嗎?
第一行的逗號:是你輸入的逗號,看上去所佔位置是不是要寬一些?
第二行的逗號:是程式碼中輸出的逗號,看上去所佔位置是不是要窄一些?
為什麼有這樣的區別呢?因為你在輸入的時候,逗號是在中文輸入法下輸入的。
這樣輸入會有什麼問題呢?
英文狀態下輸入的逗號佔1個位元組,而在這裡輸入的中文逗號佔2個以上的位元組(與編碼形式有關)。正是這個原因,造成了問題的出現。
請看對你輸入的重演:
第二:問題解決辦法轉換輸入法,在英文狀態下輸入相關資訊即可。
切記:在程式設計當中,除了你想顯示出來的中文之外,其它的符號一定是在英文半形狀態下輸入。這是基礎。
如是你覺得我回答對你有用,請關注 嚴sir課堂,同時,如果你想從基礎開始學習C語言,更要 關注 嚴sir課堂。
-
3 # C語言答疑課堂
題主這個問題問的很好的。因為你是用scanf函式讀取字元,如果字元之間用逗號隔開,那麼scanf函式就會讀取逗號了,因為逗號也是字元啊。
就像題主的第一張圖,用逗號分隔開,那麼變數a的值是字元“6”,變數b的值就是逗號了!
scanf函式給你造成的坑遠不止題主的這個問題。在C語言中,使用scanf函式和getchar時,如果緩衝的換行符沒有處理好,程式執行可能會有異常或者閃退等現象。我專門寫了一篇文章來解釋這個現象,有興趣的可以查閱下述連結:
https://gitbook.cn/m/mazi/activity/5b35f1292dbf944d53f6f06b
這個很簡單。
輸入應該為:5,6,65,66
而樓主在這裡不知是加了多餘的空格還是用的中文逗號。
總結:sanf()的用法就是要格式一樣,程式碼裡面用逗號、下劃線隔開,輸入時也要相同的格式隔開,不能多不能省。程式碼裡面用空格隔開或者不隔開,輸入時都必須用空格隔開,不能用省或者其他字元。