我想为表中的每个元素都使用字符'ab',但是在控制台中,我要这样做:
tab[0] = argvab
tab[1] = argvabab
tab[2] = argvababab
tab[3] = argvabababab
这是我的代码的一部分:
char **tab = (char**)malloc((n) * sizeof(char*));
for (int i = 0; i < n; i++) {
tab[i] = argv[1];
strcat(tab[i], "ab");
printf("tab[%d] = %s\n", i, tab[i]);
}
答案 0 :(得分:2)
tab[i] = argv[1];
strcat(tab[i], "ab");
不允许将内容附加到argv
字符串中。它们是固定大小的块,没有多余的空间。追加会调用未定义的行为。
即使您可以每次都附加到argv[1]
而不是argv[i]
。
解决方案::(a)将argv[1]
更改为argv[i]
,并(b)在附加每个参数之前将其复制。