Как запретить библиотеке Windows C преобразовывать » r n» в » n» при чтении текстового файла на C?

#c #windows #newline

#c #Windows #перевод строки

Вопрос:

У меня есть обычный текстовый файл, строки которого заканчиваются обычным r n . Однако при использовании «открыть» и «прочитать» Windows преобразует все r n в n. Я знаю, что это означает, что я должен открыть файл в двоичном режиме, но функция «открыть» не предоставляет эту опцию, она доступна только для чтения, только для записи или только для чтения-записи.

Это код:

 int File_Size = ...; 
char* Buffer = (char*)malloc(File_Size);

int Handle = open(File_Path,O_RDONLY);
read(Handle,Buffer,File_Size);
close(Handle);
  

Комментарии:

1. Почему нет «fopen ()»?

2. Возможно, вы первый, кто жалуется на это! Забота об обоих rn и n иногда такая боль.

3. Это делает не Windows, а библиотека C.

4. Это особенность, а не ошибка. Системный маркер конца строки ( "rn" для Windows) преобразуется в один символ новой строки ( 'n' ) при вводе и преобразуется обратно при выводе, что освобождает вас от необходимости беспокоиться о том, как каждая система представляет конец строки. Почему вы не можете просто работать с этим?

Ответ №1:

Попробуйте использовать O_RDONLY|O_BINARY .

Комментарии:

1. спасибо тебе так много, действительно спаси мой день 🙂