Это особенность Windows, восходящая к первым дням MS-DOS. В этих системах принято, что разделителем строк является пара символов "\r\n
". Конечно, в Linux / Unix / Solaris / и т. Д. Разделителем строк является один символ "\n
"
Существуют различные утилиты, такие как dos2unix
и unix2dos
в Linux, которые ничего не делают, кроме этого преобразования. Практически каждая программа для передачи файлов тоже имеет с ней дело. См. Команду режима kermit
.
Соглашение коснулось функции библиотеки времени выполнения MSDOS / windows C
fopen()
(среди прочих): второй параметр может иметь b
или t
для явной установки преобразования разделителя строк. Преобразование t
ext преобразует \r\n
в \n
на входе и \n
в \r\n
на выходе. b
внутреннее преобразование не делает такого преобразования.
FILE *f1 = fopen ("somefile.txt", "rt"); /* open in text conversion mode */
FILE *f2 = fopen ("anotherfile.bin", "rb"); /* open without text conversion */