2013-09-30 87 views
-1

我正在使用從arg收到的字符串返回其他字符與字符混洗。錯誤malloc從字符串從argv

int size = strlen(argv[4]); 
char* res = malloc(size+1); 

然後RES被填充的argv的字符[4],但是當我在控制檯鍵入「測試」,它返回'測試? (當我不洗牌的時候,只是複製字符串,逐個字符)。

這是爲什麼?

如果我把大小+100代替,它可以工作,但我不明白爲什麼。

+0

你是如何複製字符串?你包括'\ 0'嗎? – cnicutar

+0

事實上,我忘了包括\ 0,它現在被糾正了,但那不是問題。謝謝 ! –

+0

@Sheeft檢查評論並編輯爲您接受的答案 - 這是錯誤的,但它可能掩蓋了您的實際問題。 –

回答

-2

那是因爲你沒有考慮char的大小。這應該是訣竅:

char* res = (char*)malloc((size+1)*sizeof(char)) 
+0

哦,是的,謝謝,我用sizeof(char)而不是sizeof(char *)...我確實做了詭計! –

+2

你爲什麼要乘以sizeof(char *)'?這絕對不是正確的答案。 – cnicutar

+0

哎呀,你是對的。這是一個錯字。 – 2013-09-30 21:35:14