我创建了一个像这样的配置文件
smartphones = 50;
laptops = 30;
watches = 20;
当程序运行时,我希望它将配置设置加载到下面列出的程序变量中。
int smartphones, laptops, watches;
谢谢!
编辑: 我做了一个测试来解析配置文件中的文本。无论如何,我认为代码并不好。建议?
int count = 0;
int flag = 0, more = 0;
int sphones = 0, laptops=0, watches=0;
`
if((fp = fopen("filecfg.txt","r")) != NULL){while(fgets(bufr,MAXLINE,fp)!=NULL){
` count +=1;`
if(flag==0){
for (int k = 0; bufr[k] != '\0'; k++){
if (isdigit(bufr[k])){
if(more==1){
sphones *= 10;
sphones += bufr[k] - '0';
} else {
sphones = bufr[k] - '0';
more=1;
}
}
}
flag = 1;
}else if(flag==1){
for (int k = 0; bufr[k] != '\0'; k++){
if (isdigit(bufr[k])){
if(more==1){
laptops *= 10;
laptops += bufr[k] - '0';
} else {
laptops = bufr[k] - '0';
more=1;
}
}
}
flag = 2;
}else if(flag==2){
for (int k = 0; bufr[k] != '\0'; k++){
if (isdigit(bufr[k])){
if(more==1){
watches *= 10;
watches += bufr[k] - '0';
} else {
watches = bufr[k] - '0';
more=1;
}
}
}
flag = 3;
}
答案 0 :(得分:2)
这个答案是在C#中留下来给后人留下的。问题的原始标题和标签是C#而不是C.
string config = File.ReadAllText("config_file");
var values = config.Split(";", StringSplitOptions.RemoveEmptyEntries);
var dict = new Dictionary<string, int>();
foreach(var value in values)
{
var pair = value.Split("=",StringSplitOptions.RemoveEmptyEntries);
var key = pair[0].Trim();
var val = Convert.ToInt32(pair[1].Trim());
dict[key] = val;
}
int smartphones = dict[nameof(smartphones)];
答案 1 :(得分:0)
假设您的配置条目中包含txt文件,您就是这样做的。
var configEntries = File.ReadAllLines("Path/To/YourFile");
int smartphones = int.Parse(configEntries.First(x=>x.Replace(";","")
.Contains("smartphones"))
.Split(' ')[1].Trim());
//Repeat same for other 2 variables.