C - 如何使用特定格式解析文件(或字符串)

时间:2018-03-06 18:09:59

标签: c parsing

我的表格中有一个文件:

PROPERTY1=VALUEX
PROPERTY2=VALUEY
...

我想写一个这样的函数:

int find_property(char* file_contents, char* property_name, char* value)

将文件的内容作为char *,然后找到该属性并将其值赋给char * value。如果找到属性,显然会返回0,如果没有,则返回1.

我希望能够做到这样的事情:

char file_contents[500];
char* property = "PROPERTY1";
char value[500];

load_file_contents("file.txt", file_contents);
if(find_property(file_contents, property, value) == 1){
    // Do something with 'value'
}

我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我用'$'字符终止了文件,这有效:

    char c = file_contents[0];
    char property_name[100] = {};
    char value[100] = {};
    int in_property = 1;
    int in_value = 0;
    int i = 0;
    int t = 0;
    while(c != '$'){
        if(c == '='){
           in_property = 0;
           in_value = 1;
           property_name[i] = '\0';
           i = 0;
           // continue; 
        } else if(c == '\n'){
           in_property = 1;
           in_value = 0;
           value[i] = '\0';
           if(strcmp(property_name, property) == 0){
              sprintf(result, value);
              return;
           }
           i = 0;
        } else if(in_property == 1){
            property_name[i] = c;
            i++;
        } else if(in_value == 1){
            value[i] = c;
            i++;
        }
        t++;
        c = file_contents[t];
    }