CSV文件的内容到C中的结构

时间:2016-12-19 11:53:27

标签: c csv structure

我有一个结构......

struct myStruct {
    char Topic[8];
    char Unit[8];
    char Prim[1];
    char Temp[2];
    ...
    ...
    ...
    };

我正在解析csv文件中的数据。其中每个标记是该顺序中结构的成员。

ptr = fgets( record, MAX_RECORD, fpIn );
strcpy(eachRow, record);
token = strtok(eachRow, ",");
while(token != NULL)
{   
    printf("Token = %s \n", token);
    // I have to copy the token into that members of the structure in that order.
    token = strtok(NULL, ",");
}

如何将structuer memebers映射到指针,以便我可以在循环中将令牌直接复制到结构的成员中?

1 个答案:

答案 0 :(得分:5)

我只使用一个静态的偏移数组,使用offsetof()在编译时计算:

static const size_t fields[] = {
  offsetof(struct myStruct, Topic),
  offsetof(struct myStruct, Unit),
  offsetof(struct myStruct, Prim),
  ...
};

然后在标记每个字段时逐步执行此操作。当然,你可以通过包括最大字段大小来改善它,以防止覆盖。

另请注意,一般来说,解析CVS可能比您想象的更难,因此如果它很重要,可能值得使用第三方库来执行此操作。