2016-10-17 2 views
-1

Я предполагаю, что файл заполнен данными.Поведение fwrite

Если открыть этот файл в режиме "r+" и seek в любом положении, не EOF и write один или более символов в этом файле, что будет стандартный результат ?

  • В POSIX
  • В GNU
  • В DOS/Windows?

Будут ли перезаписаны или сдвинуты следующие символы?

Если нужен пример, это может быть такой файл:

Файл a.tx:

abcdefghijklmnopqrstuvwxyz 

код C сниппет:

FILE * f = fopen("a.tx", "r+"); 
fseek(f, 5, SEEK_SET); 
char * str = "12"; 
fwrite(str, 1, 2, f); // this is just an example 
+0

Существует нижний предел, почему? Как я могу улучшить свой вопрос? – LittleByBlue

ответ

0

Это очень очень простой I/O поведение ... и не относится ни к POSIX, ни к GNU, ни к DOS/Windows, это просто стандарт C.

Он просто напишет 12 в позиции 5 (начало отсчета при 0), поэтому записывая 12 над fg. Помните, что это может быть не сразу видно в файле, так как запись может быть буферизирована; если вы закроете или закроете файл сразу после этого, данные будут обязательно записаны в физическое место назначения.

Там обычно не сдвига (вы имеете в виду вставив правильно?) Доступны в операционных системах, в то время как вы можете просмотреть его в качестве основной функциональности, вставляя что-то в файл обусловливают необходимость слишком много операций, которые будут рассматриваться в качестве основной функции ОС ,

+0

a * shift * будет 'abcdefghi ...' ** -> ** 'abcde12fghi ...'. Это именно то, что я хотел знать, хотя я думал, что для этого есть стандарт. – LittleByBlue

+0

Это не называется сдвигом, а вставкой. –

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