#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. спасибо тебе так много, действительно спаси мой день 🙂