我正在尝试通过.csv文件解析格式如下
病人,分钟,卡路里,距离,地板,心脏,步骤,睡眠水平
该行之前已经过修改,因此行(a ,,)中的空值更改为,-1,并且在此之前最后加了一个逗号,因此,如果sleep_level为空,它也将得到-1值。
strcpy(data[i].patient, strtok(line, ","));
//Detect for correct patient
if (data[i].patient == patient) {
printf("Wrong patient, skiping data");
}
else {
//Minute (string)
strcpy(data[i].minute, strtok(NULL, ","));
if (i != 0 && strtok(NULL, ",") == data[i - 1].minute) {
}
else {
//Calories (double)
data[i].calories = atof(strtok(NULL, ","));
//Distance (double)
data[i].distance = atof(strtok(NULL, ","));
//Floors(unsigned int)
data[i].floors = atoi(strtok(NULL, ","));
//Heart Rate(unsigned int)
data[i].heartRate = atoi(strtok(NULL, ","));
//Steps(unsigned int)
data[i].steps = atoi(strtok(NULL, ","));
//Sleep level (enumertated var)
int sleepLvl = atoi(strtok(NULL, ",")); <-BREAKS HERE
if (sleepLvl == 0 || sleepLvl == -1) {
data[i].sleepLevel = NONE;
}
else if (sleepLvl == 1) {
data[i].sleepLevel = ASLEEP;
}
else if (sleepLvl == 2) {
data[i].sleepLevel = AWAKE;
}
else {
data[i].sleepLevel = REALLYAWAKE;
}
//Increment the index
i++;
}
这段代码使用令牌将逗号与已解析的行一起使用,一次将信息提取到一个部分,然后将其放入结构数组中以存储所有数据。应该注意的是sleep_level是一个ENUM,但我认为我的处理方式是正确的。
代码在
此数据的格式行示例为
12cx7,0:01:00,0.968900025,-1,0,67,0,1,
我应该在strtok中使用什么(我相信是错误的根源)来正确解析最后一个值?
最佳答案
我已经解决了这个问题,程序前面有一些比较代码字符串的问题
关于c - 修复了“将无效参数传递给认为无效参数致命的函数”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54337554/