Перезаписать содержимое файла в C - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь перезаписать содержимое файла, используя 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 .

Как я могу это сделать?

1 Ответ

0 голосов
/ 19 мая 2018

Используйте режим "r+", чтобы открыть файл вместо "a+" (b для двоичного файла является необязательным и, по существу, не имеет значения в системах POSIX): -

#include <stdlib.h>
#include <stdio.h>

int main(void){
    FILE *fp = fopen("file.txt", "r+");
    fseek(fp, 10, SEEK_SET);
    fwrite("ABCD", 1, 4, fp);
    fclose(fp);

    return 0;
}
...