【发布时间】:2016-05-25 17:12:27
【问题描述】:
我在解析 .ini file 时遇到问题。我知道有很多关于这个主题的帖子,我已经阅读了很多。我的inifile只有一个entry:
font=tahoma.ttf
源代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
static FILE *ini_file;
char font[20];
void LoadConfig()
{
char Setting[20],Value[20];
int EndOfFile = 0;
if ((ini_file = fopen("config.ini", "r")))
{
EndOfFile = fscanf(ini_file, "%[^=]=%s", Setting, &Value);
while (EndOfFile != EOF)
{
if(strcmp(Setting,"font") == 0)
{
strcpy(font,Value);
}
EndOfFile = fscanf(ini_file, "%[^=]=%s", Setting, &Value);
}
fclose(ini_file);
}
}
问题在于,该值并非永远不会读入font variable。
【问题讨论】:
-
我的ini文件里只有一行"font=tahoma.ttf"。
-
您是否使用调试器逐行检查您的代码?
-
对不起,我不知道如何调试源代码,所以我使用了 printf("OK");
-
算法很简单,按行分割 -> 按
=分割 -> 移位结果,得到键,再次移位得到值 -
1) 学习使用您的调试器!没有像现在这样的时间;)。 2)你的代码有很多潜在的问题,包括(但不限于)
char Setting[20],Value[20]。 3)建议:使用fgets()和'strpbrk ( line, "="),就像user3121023建议的那样。