Не уверен, что именно вы делаете, но если вы проанализируете файл перед сохранением, возможно, вы забудете удалить старый \n
из исходной последней строки.
РЕДАКТИРОВАТЬ: это на самом делеправо.OP использует fgets
функцию, которая включает в себя терминатор строки.
Таким образом, начиная с «test, test, test \ n» с strtok
, он получит «test», «test», «test \ n»так что когда он будет сохранен обратно, в файл будет добавлен новый символ новой строки (забудьте об этом).
Вы можете исправить это, установив для последнего символа значение null с помощью
linebuffer[strlen(linebuffer)-2] = '\0'
(этобезопасно, так как fgets возвращает строку с нулевым символом в конце)
Вы также можете добавить \n
к используемым разделителям, в конечном итоге вы должны иметь такое же поведение (не уверен насчет пустых токенов со strtok, но IIRC они просто отбрасываются).