По какой-то причине моя функция записи в текстовый файл внезапно перестала работать.
void write_data(char* filename, char* writethis)
{
ofstream myfile;
myfile.open (filename, std::ios_base::app);
myfile << endl << writethis;
myfile.close();
}
Функция была вызвана из цикла, поэтому в основном она начиналась с пустой строки и добавляла все следующие строки "writeethis" в новой строке.
Тогда внезапно, никаких новых строк. Весь текст был добавлен в одну строку. Поэтому я немного покопался и наткнулся на это:
- Windows = CR LF
- Linux = LF
- MAC <0SX = CR </li>
Итак, я изменил строку на
myfile << "\r\n" << writethis;
И это снова сработало. Но сейчас я в замешательстве. Я пишу на Linux , но я читаю текстовые файлы, созданные с помощью программы на Windows после передачи их с filezilla . Теперь, какая часть этого заставила строки в текстовом файле появиться как одна строка?
Я был почти уверен, что "endl" отлично работает для linux, так что теперь я думаю, что windows испортила файл после передачи их с помощью filezilla? Если испортить способ записи (и чтения) текстового файла, моя программа будет повреждена, поэтому, если кто-то сможет это объяснить, я буду признателен.
Я также не помню, что я изменил в моей программе, чтобы это сломалось, потому что раньше она работала просто отлично. Единственное, что я добавил, - это потоки.
Edit:
Я попытался поменять режим передачи с ASCII / Binary (даже удалил force-ASCII-for-txt-extension), но он не делает различий. Новые строки появляются в Linux, но не в Windows.
![fz-messup](https://i.stack.imgur.com/9ubD8.png)
Как странно.