Некоторые проблемы, которые я мог видеть:
1: неверный аргумент для memset
.
Изменение
memset(tempbuffer, 0, sizeof((char) 1024));
до
memset(tempbuffer, 0, sizeof(tempbuffer));
На самом деле здесь нет необходимости в memset
.
2: не увеличивать указатель msg
при обнаружении \n
.
Добавить
msg++;
до / после
*tbuf = '\0';
3: сброс tbuf
к началу массива в начале каждой итерации
Добавить
tbuf = &tempbuffer[0];
Внутри первого while
цикла.
4: *tbuf = '\0';
должно быть *(tbuf-1) = '\0';
как вы уже увеличили tbuf
на данный момент.
Посмотри, как работает