Когда существующий непустой файл успешно открывается fopen()
в режиме "a+"
или "ab+"
, я должен иметь возможность читать из него или писать до конца без первоначального вызова fseek()
или rewind()
. Указывает ли стандарт C, что начальное чтение из этого файла будет считываться с начала файла, или я должен всегда устанавливать позицию файла перед чтением?
Стандарт C кажется неоднозначным, как это указано в 7.21.5.2 функция fopen
, которая:
6. Открытие файла в режиме добавления (a
как первый символ в аргументе mode
) заставляет все последующие записи в файл принудительно переходить к текущему концу файла, независимо от промежуточных вызовов функции fseek
. В некоторых реализациях открытие двоичного файла в режиме добавления (b
в качестве второго или третьего символа в приведенном выше списке из mode
значений аргументов) может изначально позиционировать индикатор положения файла для потока за пределами последних записанных данных из-за заполнение пустым символом.
В тех системах, где индикатор положения файла будет указывать на последние записанные данные или за ними, произойдет ли сбой начальной операции чтения?