【发布时间】:2012-02-21 21:06:13
【问题描述】:
寻找一种从配置文件中读取参数的方法我找到了一种很好的方法,但问题是当我尝试计算行数时会发生一些非常奇怪的事情。
这是代码:
FILE *file = fopen("config", "r");
char line[100];
int linenum = 0;
//int foo; Uncomment and it starts to working, doesn't matter if you rename it.
while(fgets(line, sizeof(line), file) != NULL) {
char option[4];
char arg[100];
if (line[linenum] == '#')
continue;
linenum++;
if (sscanf(line, "%s %s", option, arg) != 2)
fprintf(stderr, "Syntax error, line %i\n", linenum);
配置文件如下所示:
#config file
option1
option2
option3
所以结果是:
Syntax error, line 1
Syntax error, line 0
Syntax error, line 0
但是,如果我在 while 循环之前声明一个具有任何名称的 int 变量,它就会开始工作!
结果是:
Syntax error, line 1
Syntax error, line 2
Syntax error, line 3
这里到底发生了什么?我的脑子要炸了,也许这很愚蠢,但我看不出有什么原因。
【问题讨论】:
-
不应该是你的问题,但你不想检查
line[0] == '#'而不是line[linenum]吗? -
你说得对,我刚刚将 line[linenum] 更改为 line[0] 非常感谢。