#c #loops #strcat
#c #циклы #strcat
Вопрос:
Я хочу иметь символы ‘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] = %sn", i, tab[i]);
}
Ответ №1:
tab[i] = argv[1];
strcat(tab[i], "ab");
Вам не разрешается добавлять что-либо к argv
строкам. Это блоки фиксированного размера без дополнительного пространства. Добавление вызывает неопределенное поведение.
Также, даже если бы вы могли, вы бы добавляли к argv[1]
каждый раз, а не argv[i]
.
Решение: (а) Измените argv[1]
на argv[i]
и (б) скопируйте каждый аргумент, прежде чем добавлять к нему.