用 C 创建一个简单的配置文件和解析器

标签 c file parsing configuration

我创建了一个这样的配置文件

智能手机 = 50; 笔记本电脑 = 30; watch = 20;

当程序运行时,我希望它将配置设置加载到下面列出的程序变量中。

int 智能手机、笔记本电脑、 watch ;

谢谢!

编辑: 我做了一个测试来解析配置文件中的文本。无论如何,我认为代码不好。有建议吗?

int 计数 = 0; int 标志 = 0,更多 = 0; int sphones = 0,笔记本电脑=0, watch =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;   
        }

最佳答案

这个答案是用 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)];

关于用 C 创建一个简单的配置文件和解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318016/

相关文章:

c - 在我的 printf 中打印一个 = 符号

c - 从非 void 函数的末尾掉落时写入未使用的参数的返回值

javascript - 如果文件或文件位置都不包含,则设置文件名和格式

.net - HTML Agility Pack 和 Visual Studio C++ 的问题

java - 如何在Android Studio中的RecyclerAdapter中传递多个数组

java - 告诉 SAX 解析器忽略无效字符?

c - Visual Studio Community 2017 cl 链接器不会链接 GTK3 库?

c - 在C中显示来自Web服务器的图像

c++ - 如何在同一位置的所有 Linux 发行版中找到包含 CPU 温度和风扇速度信息的文件?

java - Android - 从 url 下载 JSON 文件