[語法] 如何傳入一個字串到副程式

看板C_and_CPP作者 (severus)時間14年前 (2010/06/26 14:32), 編輯推噓7(7012)
留言19則, 5人參與, 最新討論串1/1
我想傳入一個字串到副程式中 我的寫法如下 副程式: void StrCat(char a[], char b[]) { strcat(a, b); /*連接a,b兩個字串*/ printf("%s", a); } 變數: char s1[] = "abc"; char s2[] = "def"; 如果我執行這行 StrCat(s1, s2); 結果會是印出 abcdef 如果我執行 StrCat("", s1); 或是 StrCat(s1, "a"); 就會當掉 沒有顯示語法錯誤,所以我猜應該是傳入的參數不接受 只要傳數不是變數的形式似乎就會出問題 但是我的程式中需要傳入空字串還有"0"和"1"這三種 有沒有人知道為什麼會這樣? 先謝謝解答了 --

01/08 20:41,
我請香港女助理幫我看一下飛機 結果她...
01/08 20:41

01/08 20:44,
氣到懶叫彈出來
01/08 20:44

01/08 20:44,
樓上好糟糕 請暫時不要跟我說話 =口=
01/08 20:44

01/08 20:45,
我是說樓樓上
01/08 20:45

01/08 20:45,
不 是樓樓樓上
01/08 20:45

01/08 20:45,
...............
01/08 20:45
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.48.111

06/26 14:35, , 1F
你的s1字串長度不夠接上s2, 你知道s1這樣宣告, 總共是幾
06/26 14:35, 1F

06/26 14:35, , 2F
個char空間嗎??
06/26 14:35, 2F

06/26 14:38, , 3F
3個... 原來如此我懂了 謝謝
06/26 14:38, 3F

06/26 14:48, , 4F
不是3個
06/26 14:48, 4F

06/26 15:02, , 5F
這兩個當的原因應該還是不同理由吧?
06/26 15:02, 5F

06/26 15:02, , 6F
雖然很久沒寫c/c++了..但是 "" 是code裡面.不能寫入
06/26 15:02, 6F

06/26 15:03, , 7F
吧??! 即使是 " " 應該還是會當
06/26 15:03, 7F

06/26 15:04, , 8F
不小心把文句混著看了XD 的確不能把string接到 "xxx"
06/26 15:04, 8F

06/26 15:05, , 9F
之後, 因為 "xxx" 應該放在不可讀寫的區域, 不要說
06/26 15:05, 9F

06/26 15:06, , 10F
strcat, 想改也不行XD char s1[]="xx"; 與char *s1="xx"
06/26 15:06, 10F

06/26 15:06, , 11F
不同....Orz
06/26 15:06, 11F

06/26 15:19, , 12F
""是放可讀區吧
06/26 15:19, 12F

06/26 15:23, , 13F
我不確定,不過一直以為是 code segment
06/26 15:23, 13F

06/26 15:23, , 14F

06/26 15:35, , 15F
對不起typo了, 不可 寫 的區域.... 加班加到頭殼壞去Orz
06/26 15:35, 15F

06/26 15:38, , 16F
另外, 印象中之前看到const str literal是在Data RO區,
06/26 15:38, 16F

06/26 15:38, , 17F

06/27 11:27, , 18F
十戒中好像有說指標不能對常數字串修改@@"
06/27 11:27, 18F

06/27 11:40, , 19F
用debugger查一下rodata範圍,然後印出""位址就能驗證
06/27 11:40, 19F
文章代碼(AID): #1C9PyEae (C_and_CPP)