我正在使用從arg收到的字符串返回其他字符與字符混洗。錯誤malloc從字符串從argv
int size = strlen(argv[4]);
char* res = malloc(size+1);
然後RES被填充的argv的字符[4],但是當我在控制檯鍵入「測試」,它返回'測試? (當我不洗牌的時候,只是複製字符串,逐個字符)。
這是爲什麼?
如果我把大小+100代替,它可以工作,但我不明白爲什麼。
我正在使用從arg收到的字符串返回其他字符與字符混洗。錯誤malloc從字符串從argv
int size = strlen(argv[4]);
char* res = malloc(size+1);
然後RES被填充的argv的字符[4],但是當我在控制檯鍵入「測試」,它返回'測試? (當我不洗牌的時候,只是複製字符串,逐個字符)。
這是爲什麼?
如果我把大小+100代替,它可以工作,但我不明白爲什麼。
那是因爲你沒有考慮char的大小。這應該是訣竅:
char* res = (char*)malloc((size+1)*sizeof(char))
哦,是的,謝謝,我用sizeof(char)而不是sizeof(char *)...我確實做了詭計! –
你爲什麼要乘以sizeof(char *)'?這絕對不是正確的答案。 – cnicutar
哎呀,你是對的。這是一個錯字。 – 2013-09-30 21:35:14
你是如何複製字符串?你包括'\ 0'嗎? – cnicutar
事實上,我忘了包括\ 0,它現在被糾正了,但那不是問題。謝謝 ! –
@Sheeft檢查評論並編輯爲您接受的答案 - 這是錯誤的,但它可能掩蓋了您的實際問題。 –