Поскольку вы используете strcat()
, вы должны убедиться, что память инициализирована нулем (NULL), поскольку речь, конечно, идет о строках. Вы можете сделать это следующим образом:
newName[k] = malloc(100 * sizeof(char));
newName[k][0] = '\0';
Таким образом, вы в основном NULL-завершаете строку в первом символе , что означает, что у вас есть пустая строка. Затем вы добавляете свои фактические данные к этой строке.
Без этого шага у вас была строка C, которая не заканчивалась NULL, то, что нужно стандартной библиотеке строки C, чтобы работать и знать, где строказаканчивается.
Или следуйте предложению @LinusGudmundsson (более дорого, так как он будет выполнять итерацию по 100 элементам для инициализации их всех), и замените этот вызов malloc следующим:
newName[k] = calloc(100 , sizeof(char));
где при вызове этого метода ноль инициализирует память для вас тоже. Подробнее читайте в Разница между malloc и calloc?
Вывод, который вы должны получить сейчас (при любом подходе):
input the new alphabet
b j k v q z c d e t u h w x n o p f g l y m r s i a
How many names will you input?3
Enter the names:
jake amy santiago
jake
amy
santiago
tbuq
bwi
gbxlebcn
9 0 10 4
0 12 24
18 0 13 19 8 0 6 14
jake
amy
santiago
PS: не причина проблемы, но Я разыграю результат malloc? Нет.