[問題] 有關strcat的問題

看板C_and_CPP作者 (修身養性中)時間9年前 (2016/12/05 17:44), 9年前編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
我使用C 想把main的參數列串接起來 void main(int argc,char * argv[]) { for(i=1;i<arvc;i++) { strcat(argv[0],"p") strcat(argv[0],argv[i]) } } 以上執行後printf argv[0]預期出現 argv[0]pargv[1]pargv[2]pargv[3]... 但執行卻出現 argv[0]ppargv[2]pargv[3]..... 多了p卻少了argv[1]........... try了許久....不知道問題出在哪?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.74.125.51 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480931087.A.28F.html ※ 編輯: AlexKuo (203.74.125.51), 12/05/2016 17:46:08

12/05 18:18, , 1F
argv[0]的size不夠
12/05 18:18, 1F

12/05 18:51, , 2F
argv[0] 的大小只保證裝得下傳進來的字串
12/05 18:51, 2F

12/05 18:51, , 3F
它後面有沒有其他字串是依執行環境而定
12/05 18:51, 3F

12/05 18:52, , 4F
這裡的狀況是恰巧它後面緊接 argv[1] 所以 argv[1] 被蓋掉
12/05 18:52, 4F

12/05 18:54, , 5F
請問argv的size要如何加大,這不是main自動的參數嗎?
12/05 18:54, 5F

12/05 19:01, , 6F
另外準備空間去接吧
12/05 19:01, 6F

12/05 19:06, , 7F
了解,謝謝大家
12/05 19:06, 7F

12/05 19:11, , 8F
就因為是自動幫你準備的參數所以沒轍, 你只能自己另外準備
12/05 19:11, 8F

12/06 08:04, , 9F
 
12/06 08:04, 9F
文章代碼(AID): #1OHJSFAF (C_and_CPP)