[問題] char宣告基礎問題

看板C_and_CPP (C/C++)作者 (Conical)時間10年前 (2016/01/22 21:55), 編輯推噓6(6010)
留言16則, 8人參與, 最新討論串1/1
[c語言] 下列那一個字串的定義有錯誤? (A) char s[]="123"; (B) char s[3]="123"; (C)char s[]="1"; (D) char s[]={'1', '2', '3', '\0'}; ANS:B 請問 char s[3]="123"; 錯在哪? 我在編譯器打了下面指令,沒有發現語法錯誤 char s[3]="123"; printf("%c",s[0]); -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.63.17 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1453470912.A.4B6.html

01/22 22:14, , 1F
char s[4]="123", s[0]='1',s[1]='2',s[2]='3',s[4]='\0'
01/22 22:14, 1F

01/22 22:14, , 2F
去把 字元、字串的關係搞清楚
01/22 22:14, 2F

01/22 22:15, , 3F
題目出得不好, 需要定義什麼是「錯誤」
01/22 22:15, 3F

01/22 22:15, , 4F
更正筆誤 s[0]='1',s[1]='2',s[2]='3',s[3]='\0'
01/22 22:15, 4F

01/22 22:18, , 5F
另外如果要出出字串應該是 printf("%s", s);
01/22 22:18, 5F

01/22 22:32, , 6F
我漏看題目有明確說「字串」, 這樣的話就沒疑問 B 有誤
01/22 22:32, 6F

01/22 22:34, , 7F
感謝各位解答,了解了
01/22 22:34, 7F

01/23 00:49, , 8F
我覺得C裡的"字串"是否等同C-string有討論的空間XD
01/23 00:49, 8F

01/23 03:06, , 9F
看到C/C++每年都有新血加入 感到溫馨
01/23 03:06, 9F

01/23 13:14, , 10F
樓上的id真猛..C/C++每年都有人問啊,學校教的嘛
01/23 13:14, 10F

01/23 14:05, , 11F
每年都有計算機概論課呀
01/23 14:05, 11F

01/24 09:12, , 12F
如果編碼者故意不用終止符呢,那這題怎能算
01/24 09:12, 12F

01/24 09:12, , 13F
像加密解密或病毒程式什麼的
01/24 09:12, 13F

01/24 09:36, , 14F
這題出得不好+1
01/24 09:36, 14F

01/24 12:19, , 15F
"123" 本身的定義就是 1,2,3,\0 四個字元
01/24 12:19, 15F

01/24 12:20, , 16F
硬要把他丟入一個 [3] 的陣列會造成溢位吧,本質上就錯了
01/24 12:20, 16F
文章代碼(AID): #1MeZJ0Is (C_and_CPP)
文章代碼(AID): #1MeZJ0Is (C_and_CPP)