Исправления для «Недопустимый параметр был передан функции, которая считает недопустимые параметры фатальными» - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь проанализировать файл .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, но я думаю, что способ, которым я обработал его, является правильным.

Код разбивается на <-breaks здесь с необработанным исключением: недопустимый параметр был передан функции, которая считает недопустимые параметры фатальными. </p>

примерная строка для этих данных будет 12cx7, 0: 01: 00,0.968900025, -1,0,67,0,1,

что мне следует использовать в strtok (что я считаю источником ошибки), чтобы правильно проанализировать последнее значение

1 Ответ

0 голосов
/ 24 января 2019

Я исправил проблему, ранее в программе были проблемы со сравнением строк кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...