В C, как написать какой-либо символ конца строки подходит для ОС? - PullRequest
7 голосов
/ 22 апреля 2009

Unix имеет \ n, Mac был \ r, но теперь \ n, а DOS / Win32 - \ r \ n. При создании текстового файла с C, как обеспечить, чтобы какой-либо символ конца строки соответствовал ОС?

Ответы [ 3 ]

12 голосов
/ 22 апреля 2009

Из Википедии:

При записи файла в текстовом режиме '\ n' прозрачно переведен на нативная последовательность новой строки, используемая система, которая может быть длиннее одной персонаж. (Обратите внимание, что C реализация разрешается не хранить символы новой строки в файлах. За Например, строки текстового файла может храниться в виде строк таблицы SQL или как записи фиксированной длины.) Когда чтение в текстовом режиме, родное последовательность новой строки переводится обратно в '\ П'. В двоичном режиме второй режим ввода / вывода поддерживается библиотекой C, нет перевод выполняется, и внутреннее представление любого побега последовательность выводится напрямую.

12 голосов
/ 22 апреля 2009
fprintf(your_file, "\n");

Это будет преобразовано в соответствующий EOL библиотекой stdio в вашей операционной системе, если вы открыли файл в текстовом режиме. В двоичном режиме преобразование не происходит.

9 голосов
/ 22 апреля 2009

Когда вы открываете файл в текстовом режиме (передайте "w" в fopen вместо "wb") любые символы новой строки, записанные в файл, будут автоматически преобразованы в соответствующую последовательность новой строки для системы. Последовательности новой строки будут преобразованы обратно в символы новой строки при чтении файла.

Вот почему важно различать текстовый и двоичный режимы; если вы пишете в двоичном режиме, C не будет вмешиваться в байты, которые вы записываете в файл.

...