我有一个结构......
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映射到指针,以便我可以在循环中将令牌直接复制到结构的成员中?
答案 0 :(得分:5)
我只使用一个静态的偏移数组,使用offsetof()
在编译时计算:
static const size_t fields[] = {
offsetof(struct myStruct, Topic),
offsetof(struct myStruct, Unit),
offsetof(struct myStruct, Prim),
...
};
然后在标记每个字段时逐步执行此操作。当然,你可以通过包括最大字段大小来改善它,以防止覆盖。
另请注意,一般来说,解析CVS可能比您想象的更难,因此如果它很重要,可能值得使用第三方库来执行此操作。