Открытие файла в режиме «+» - PullRequest
9 голосов
/ 05 сентября 2010

Если файл открывается с помощью следующей команды:

FILE *f1=fopen("test.dat","a+");

На странице справки указано:

a +

Открыть для чтения и добавления (записив конце файла).Файл создается, если он не существует.Начальная позиция файла для чтения находится в начале файла, но вывод всегда добавляется в конец файла.

Так же f1 имеет 2 отдельных указателя смещения, один для чтения идругой для записи?

Ответы [ 3 ]

18 голосов
/ 05 сентября 2010

Нет.

Существует только один указатель, который изначально находится в начале файла, но при попытке операции записи он перемещается в конец файла .Вы можете изменить положение, используя fseek или rewind в любом месте файла для чтения, но операции записи переместят его обратно в конец файла.

4 голосов
/ 05 сентября 2010

Вы можете никогда смешивать операции чтения и записи на FILE без вызова fseek между ними. В некоторых реализациях это может работать как вам угодно, но программа, которая зависит от этого, имеет неопределенное поведение. Таким образом, вопрос о двух позициях не имеет смысла.

4 голосов
/ 05 сентября 2010

Нет, у него только один указатель.

...