Замените multiplyString()
на следующий
char *multiplyString(const char *str, int num) {
// + 1 for null-terminator
char *returnStr = calloc(sizeof(*returnStr), strlen(str)*num + 1);
for (int i = 0; i < num; i++) {
strcat(returnStr, str);
}
return returnStr;
}
Вы пытались изменить строковый литерал, что запрещено в C. Во-вторых, +=
не является конкатенацией строк в C; скорее, он пытался выполнить целочисленное сложение первого символа returnStr
.
Чтобы исправить это, вы динамически выделяете надлежащий объем памяти, используя calloc()
(который также инициализирует память до 0, что необходимо для strcat()
). Затем на каждой итерации добавляйте строку, используя strcat()
, в конец новой строки.
Не забудьте освободить строки, возвращаемые этой функцией, позже в программе, поскольку они выделяются динамически.