Unix имеет \ n, Mac был \ r, но теперь \ n и DOS/Win32 - это \ r \ n. При создании текстового файла с C, как обеспечить, какой из символов конца строки подходит для использования ОС?В C, как писать, какой символ конца строки подходит для ОС?
ответ
fprintf(your_file, "\n");
Это будет преобразован в соответствующее EOL в STDIO библиотеки на вашей операционной системе, при условии, что вы открыли файл в текстовом режиме. В двоичном режиме преобразование не происходит.
Материал из Википедии:
При записи файла в текстовом режиме, «\ п» прозрачно переводится в нативной последовательности новой строки, используемой системой , которая может быть больше, чем один характер. (Обратите внимание, что реализация С допускается не хранить символы новой строки в файлах. Для например, строки текстового файла может храниться в виде строк таблицы SQL или в виде записей фиксированной длины.) Когда чтение в текстовом режиме, последовательность нулевой последовательности переведена обратно на '\ n'. В двоичном режиме выполняется второй режим ввода-вывода, поддерживаемый библиотекой C, без перевода , и внутреннее представление любой последовательности выводится непосредственно.
При открытии файла в текстовом режиме (передать «ш» в fopen
вместо «термометру») любые символы новой строки, записываемые в файл, будут автоматически конвертированы в соответствующую последовательность новой строки для системы. После чтения файла последовательности Newline будут переведены обратно на символы новой строки.
Вот почему важно различать текстовый и двоичный режим; если вы пишете в двоичном режиме, C не будет вмешиваться в байты, которые вы пишете в файл.
+1 за упоминание различия между текстом и двоичными файлами (и для того, чтобы избить меня!) –
ЕСЛИ файл открыт в текстовом режиме –
Да, конечно. Я должен был включить это с самого начала. Обновлено сейчас. – hlovdal
Ответчик явно говорил о текстовых файлах. – Joey