В чем разница между rb+ и ab в fopen()?

Я не понимаю разницы между режимами "ab" и "rb+" при использовании fopen() в C.

Почему я должен выбрать одно вместо другого?


person Jox    schedule 15.05.2017    source источник
comment
В режимах a вы не можете искать или читать; и все записи добавляются в конец файла. В режиме r+ вы можете искать, читать и писать.   -  person M.M    schedule 15.05.2017
comment
.. как явно описано в man 3 fopen.   -  person Nominal Animal    schedule 15.05.2017
comment
Вам буквально нужно просто посмотреть документацию. Это это сложно?   -  person Ajay Brahmakshatriya    schedule 15.05.2017


Ответы (1)


С указанными выше спецификаторами режима файл открывается как текстовый файл. Чтобы открыть файл как двоичный файл, в строку режима должен быть включен символ "b". Этот дополнительный символ "b" может либо добавляться в конец строки (таким образом создавая следующие составные режимы: "rb", "wb", "ab", "r+b", "w+b", "a+b"), либо вставляться между буквой и знаком "+" для смешанных режимов ( "rb+", "wb+", "ab+").

Из fopen документации, которую я советую вам прочитать, прежде чем задавать вопросы. Это даст вам много информации о возможных параметрах, возвращаемых значениях, похожих функциях и т. д.

Также из того же документа:

"a" = добавить: открыть файл для вывода в конце файла. Операции вывода всегда записывают данные в конец файла, расширяя его. Операции репозиционирования (fseek, fsetpos, rewind) игнорируются. Файл создается, если он не существует.

"r+" = чтение/обновление: открыть файл для обновления (как для ввода, так и для вывода). Файл должен существовать.

person Badda    schedule 15.05.2017