РЕДАКТИРОВАТЬ: я удалил "не рассматривать как базу данных", понимая, что вы концептуально относитесь к этому ... Идея состоит в том, чтобы иметь API поверх файла конфигурации:)
Записать код впроанализируйте и прочитайте все переменные в память.При сохранении файла конфигурации просто сохраните все переменные заново, вместо того, чтобы пытаться найти одну конкретную переменную и изменить только значение этой конкретной переменной.
Примерно такбыло бы хорошо:
char *config_file_path = "/foo/bar.conf";
struct config {...} myconfig;
read_config(config_file_path, &myconfig);
// set a value
myconfig.somevalue = 5;
// When re-writing, routine simply over-writes the entire file.
write_config(config_file_path, &myconfig);
Вам нужно будет записать файл только тогда, когда пользователь сохранит конфигурацию, так что это не будет огромным узким местом в вашем приложении, чтобы сделать это таким образом.