我正在尝试通过.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/

10-11 23:05