[問題] C初學者 字串處理問題

看板C_and_CPP作者 (鼠它)時間12年前 (2013/04/13 02:49), 編輯推噓6(6012)
留言18則, 6人參與, 最新討論串1/1
各位好 小弟初學C 第二次上來問問題 這題有點淺 請別見怪感恩! 我用的平台是DEV C 今天學到C語言的字串 老師說C裡面其實沒有字串 是字元的陣列 於是我嘗試了以下程式碼: #include <stdio.h> #include <stdlib.h> int main(){ char string[100]; scanf("%s",&string); printf("%s",string); //問題一 printf("%s",string[0]); //問題二 system("pause"); return 0; } 假設我輸入abc 問題一: 為什麼執行後結果就印出abc,剩下的97個元素是什麼? 我以為空的地方會補0,然後印出abc + 97個0 問題二: 我想單看string[0]的這一個元素的內容,為何編譯會過但是卻跑出 "已停止運作"的視窗(逾時?) 有觀念錯誤還請用力指正,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.9.114

04/13 02:58, , 1F
printf("%c",string[0]); //問題二 把s改成c
04/13 02:58, 1F

04/13 02:59, , 2F
scanf("%s", string); 就好,不用加 &
04/13 02:59, 2F

04/13 03:01, , 3F
第二個問題,只是看第0個元素.....所以前面要改%c看字元
04/13 03:01, 3F

04/13 03:03, , 4F
第一個問題,因為printf會把0當作結尾,你可以試著
04/13 03:03, 4F


04/13 03:04, , 6F
輸入一些字串,然後把string[2]設定成0,他也只會顯
04/13 03:04, 6F

04/13 03:04, , 7F
示前兩個字元而已,遇到0就當作後面沒東西,不印了
04/13 03:04, 7F

04/13 03:07, , 8F
字元會用單引號括起來,'0' 的整數值是 48,'\0'才是 0
04/13 03:07, 8F

04/13 03:09, , 9F

04/13 07:12, , 10F
1.你這樣scanf其實他碰到空白.tab.enter就會斷掉
04/13 07:12, 10F

04/13 07:12, , 11F
例如a b c這樣只會讀到a而且scanf的string前不用+&
04/13 07:12, 11F

04/13 07:13, , 12F
不想斷掉可以去查gets()的用法2.把%s改成%c
04/13 07:13, 12F

04/13 07:14, , 13F
然後其實當你宣告完string時就可以printf了因為你沒
04/13 07:14, 13F

04/13 07:15, , 14F
初始化所以裡面可能是一些怪怪的東西~_~可以印看看
04/13 07:15, 14F

04/13 13:20, , 15F
問題一,你沒初始化裝什麼都有可能
04/13 13:20, 15F

04/13 23:08, , 16F
c沒有string的type,但printf卻有定義什麼是string
04/13 23:08, 16F

04/13 23:11, , 17F
建議先去看printf的參數說明, 搜尋"printf format"即可
04/13 23:11, 17F

04/13 23:38, , 18F
""是表示常數字元陣列(字串),最後會多一個\0表示字串結尾
04/13 23:38, 18F
文章代碼(AID): #1HQ5Seo5 (C_and_CPP)