Я игнорирую возвращение местного жителя, поскольку другие красноречиво говорили об этом.
int len = strlen(str);
char buffer[1024];
...
buffer[len] = '\n';
Если strlen (str)> 1024, то эта последовательность будет записывать за пределы объявленного буфера. Также, как отмечено, это (вероятно) не будет нулевым завершением.
Чтобы безопасно добавить новую строку, если это возможно,
char buffer[1024];
strncpy(buffer, str, 1024); // truncate string if it is too long
int len = strlen(buffer);
if (len < 1022) {
buffer[len] = '\n';
buffer[len + 1] = '\0';
}
Примечание. Если строка слишком длинная, это оставляет усеченную строку БЕЗ новой строки.