来自argv的字符串错误malloc

时间:2013-09-30 20:59:20

标签: c command-line-arguments argv strlen argc

我正在使用从arg收到的字符串来返回另一个字符串,其中包含洗牌后的字符。

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

然后res填充了argv [4]的字符,但是当我在控制台中输入'test'时,它会返回'Test?' (当我没有洗牌时,只是逐字符地复制字符串)。

为什么?

如果我把尺寸+ 100改为,它可以工作,但我不明白为什么。

1 个答案:

答案 0 :(得分:-2)

那是因为你没有考虑char的大小。这应该可以解决问题:

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