Я пытаюсь перезаписать содержимое файла, используя fwrite(), fseek() в C, но это не работает.
Размер файла 30. Я хочу написать «ABCD», перезаписав позицию 10 ~ 13 в файле. Поэтому я программирую ниже.
FILE *fp = fopen("file.txt", "a+");
fseek(fp, 10, SEEK_SET);
fwrite("ABCD", 1, 4, fp);
Но "ABCD" пишется после 30 позиции в файле. Я нашел несколько советов использовать двоичный режим (например, "ab+"), но 'b' игнорируется во всех системах, соответствующих стандарту POSIX.
Как я могу это сделать?
"a+"открывается для чтения и добавления. Используйте режим"r+". - person Weather Vane   schedule 19.05.2018r+. Благодарю вас! - person Frodo   schedule 19.05.2018fseekимеет ограниченное применение, поскольку перевод каретки с переводом строки может привести к тому, чтоfseekприведет к неожиданным результатам. - person Weather Vane   schedule 19.05.2018FILE *; правила немного отличаются, если вы переходите к файловым дескрипторам и используетеpwrite()). - person Jonathan Leffler   schedule 19.05.2018