我想在表格中为每个元素设置字符'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]);
}
tab[i] = argv[1];
strcat(tab[i], "ab");
你不能把东西附加到argv
字符串上。它们是固定大小的块,没有额外的空间。附加调用未定义的行为。
即使你可以每次都附加到argv[1]
而不是argv[i]
。
解决方案:(a)将argv[1]
更改为argv[i]
,以及(b)在附加每个参数之前复制它们。