каковы различия между r и rb в fopen

Я пытался использовать fopen в C, второй параметр является открытым режимом. Эти два режима "r" и "rb" имеют тенденцию смущать меня много. Кажется, что они - то же. Но иногда лучше использовать "rb". Так, почему "r" существует? Объясните это мне подробно или с примерами.Спасибо.

57
задан Slothworks 30 September 2014 в 06:08
поделиться

4 ответа

Для открытия текстовых файлов следует использовать "r". Разные операционные системы имеют несколько разные способы хранения текста, и при этом выполняются корректные переводы, так что Вам не нужно знать об идиосинкриях локальной операционной системы. Например, вы будете знать, что новые строки всегда будут появляться в виде простого "\n", независимо от того, где выполняется код.

Вам следует использовать "rb", если вы открываете нетекстовые файлы, потому что в этом случае переводы не подходят.

70
ответ дан 24 November 2019 в 19:31
поделиться

На Linux и Unix в целом "r" и "rb" одинаковы. Точнее, указатель FILE, полученный с помощью fopen()ing файла в текстовом и двоичном режиме ведет себя в Unix одинаково. В окнах и вообще в системах, использующих более одного символа для обозначения "newlines", файл, открытый в текстовом режиме, ведет себя так, как если бы все эти символы были только одним символом, '\n'.

Если вы хотите переносить чтение/запись текстовых файлов в любую систему, используйте "r" и "w" в fopen(). Это гарантирует правильную запись и чтение файлов. Если Вы открываете двоичный файл, используйте "rb" и "wb", чтобы при неудачном переводе новой строки Ваши данные не испортились.

Обратите внимание, что следствием того, что базовая система выполняет перевод новой строки за Вас, является то, что Вы не можете определить количество байт, которое Вы можете прочитать из файла, используя fseek(file, 0, SEEK_END).

Наконец, см. Какая разница между текстом и двоичными входами/выходами? на comp.lang.c FAQs.

28
ответ дан 24 November 2019 в 19:31
поделиться

Используйте «Rb», чтобы открыть двоичный файл. Затем байты файла не будут закодированы при их прочитании

8
ответ дан 24 November 2019 в 19:31
поделиться

Это имеет значение в Windows, по крайней мере,. Смотрите эту ссылку для деталей.

7
ответ дан 24 November 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: