2016-01-03 3 views
0

Что такое указатель режима, какой режим, 'insert' или overwrite?Что такое режим указателя файла?

Потому что я новичок в file pointer в C, поэтому, может быть, мой вопрос довольно глуп. Мне жаль, если кто-то это чувствует.

И что я могу сделать, если хочу insert some character в существующий файл, но не теряю символ в этом файле.

+4

Честно говоря, я не понял ваш вопрос. Какой режим? –

+0

Вы имеете в виду * read *, * write *, * append * mode? – haccks

+0

Он не контролируется самим C, Когда вы переводите 'scanf()' или 'fgets()' в операционную систему. – pmg

ответ

3

Нет файловых систем я знаю поддержки вставки в режим.

Семантика C для записи в файл потоков либо:

  • усечение для "w". Текущее содержимое файла теряется после успешного fopen().
  • переписывание содержимого файла для "r+". Только байт, явно записанный в файл, перезапишет существующее содержимое, остальное останется без изменений. Запись за пределы файла будет расширяться, как и в режиме добавления.
  • прилагается к файлу для "a". Каждая операция записи происходит в конце файла.

Отметьте, что "w" и "a" также создадут файл, которого он не существует.

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

+0

@DDK: Можете ли вы нажать на серый галочку ниже, чтобы ответить на результат, чтобы принять ответ? – chqrlie

1

Зависит от того, как вы его открыть:

Для добавления:

fopen("myfile.txt", "a"); 

Чтобы написать (перезапись):

fopen("myfile.txt", "w"); 
+6

Имея в виду, что «добавление» может " insert "вводит в заблуждение. В целом «вставка» невозможна. – alk

+0

@alk Возможно, отредактирован. Однако в общем виде «вставка» и «переписывание» часть меня говорила, что OP, вероятно, означает добавление. –

+0

'' w "' не разрешает частичную перезапись содержимого файла, выходной файл усечен до '0' или создается, если он не существует – chqrlie

Смежные вопросы