C FILE* чтение / запись и необязательное создание

Я пытаюсь открыть файл, который может существовать или не существовать для чтения и записи. Мне также нужно выполнить операции поиска для этого файла. Проблема, с которой я сталкиваюсь, состоит в том, что флаг файла "r" требует, чтобы файл существовал, флаг "w" отбрасывает существующее содержимое, а флаг "a" отключает операции поиска, всегда добавляя конец файла. Так что ни один из трех вариантов, кажется, не делает то, что мне нужно. Есть мысли об обходном пути? Или мне нужно будет при необходимости создать файл, а затем заново открыть его с флагами "r+"?

Я использую cstdio в C++ (fopen, fseek, rewind и т. Д.). Профилирование показало, что iostreams слишком медленный для моего приложения.

1 ответ

Решение

Невозможно добиться этого с помощью одного вызова fopen, поскольку ни один из доступных режимов не делает то, что вы хотите. Я думаю, что создание файла, если он не существует, а затем использование r+ - лучший вариант.

Другие вопросы по тегам