У меня проблема с режимом открытия файла с fopen().
В моем случае я хочу свободно искать курсор, иногда даже за пределами EOF. Более того, я также хочу добавить к нему вместо усечения существующего файла. Я попытался открыть файл в режиме a+; однако я не могу свободно искать файловый курсор. Каждый раз, когда я ищу курсор за пределами EOF, новые данные о поступлении будут добавляться в конец файла, а не в указанную мной позицию. В то время как, если открыть в режиме w+, существующий файл будет обрезан. Есть ли идеальное решение этой проблемы?
ОБНОВИТЬ:
Один неясный момент заключается в том, что файл не всегда может существовать; В этом случае мне нужно создать новый файл.
На самом деле я хочу обработать файл конфигурации. Я не знаю, является ли это хорошей практикой для такой реализации. Или я должен сначала разместить пустой файл конфигурации. Таким образом, нет необходимости заботиться о том, что материалы дела не существуют?
Ниже приведен фрагмент кода:
FILE *f = fopen(FILE_PATH, "wb+");
struct record r;
if (f) {
if (fread((void *)&r, 1, sizeof(struct record), f) {
/* File exists, do the normal flow */
} else {
if (feof(f)) {
/* File is newly created, do some initialization */
}
}
} else {
/* issue a warning */
}
EOF- person Summer_More_More_Tea   schedule 13.05.2012