我有这段代码,应该从文件中读取并查找参数并读取值。简而言之,我在程序启动时传递配置文件,程序应该读取这些值来配置系统。但我不明白出了什么问题,特别是为什么它不读取这些值。
void read_configuration_file(const char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
fprintf(stderr, "Error: Cannot open configuration file.\n");
exit(EXIT_FAILURE);
}
char parameter[100];
int value;
while (fscanf(file, "%s %d", parameter, &value) == 2) {
//I inserted debug prints but it doesn't enter this while
if (strcmp(parameter, "ENERGY_DEMAND") == 0) {
energy_demand = value;
printf("energy_demand %d\n", energy_demand);
} else if (strcmp(parameter, "SIM_DURATION") == 0) {
sim_duration = value;
printf("sim_duration %d\n", sim_duration);
} else if (strcmp(parameter, "ENERGY_EXPLODE_THRESHOLD") == 0) {
energy_explode_threshold = value;
printf("energy_explode_threshold %d\n", energy_explode_threshold);
}
}
fclose(file);
}
这是我读取的配置文件
ENERGY_DEMAND = 1
SIM_DURATION = 1
ENERGY_EXPLODE_THRESHOLD = 1
如何修改代码以使其正常工作?
其他一些人已经使用注释来指出代码中的错误,因此我将解决另一个问题:编写自己的配置文件解析器很可能是一个坏主意;相反,您应该考虑使用现有的开源解析器。
为什么?因为:(1)使用开源解析器可能比编写自己的解析器需要更少的开发工作并且具有更少的错误; (2) 开源解析器可能提供比您自己的解析器更有用的功能。
在互联网上搜索“c 的配置文件解析器”可以帮助您找到一些开源解析器。或者,这个Stackoverflow问题提供了一些建议。