Сегментация 11 Ошибка в конце строки? Команда перерыва не работает - PullRequest
0 голосов
/ 22 октября 2019

По сути, мне нужно пройти через строки файла CSV, чтобы найти имя, а затем ввести все столбцы оценок для этой одной строки в итог. Мне удалось получить все входные данные и строки «N / A», которые нужно игнорировать. Однако, когда я получаю конец строки, я получаю Сегментацию 11 Ошибка. Программа распечатывает каждое значение для каждого столбца, но в конце просто выходит из строя. введите описание изображения здесь

double getGrade(char csvfile[], char first[], char last[]){
    char arr[3000];
    int currVal = 0;
    double grade = 0;
    int i = 0;

    while(first[i] !='\0') {
        if(i!=0){
        first[i] = tolower(first[i]);
        }
        else{
            first[i] = toupper(first[i]);
        }
             ++i;
    }
    i = 0;
    while(last[i] !='\0') {
        if(i!=0){
        last[i] = tolower(last[i]);
        }
        else{
            last[i] = toupper(last[i]);
        }
        ++i;
    }
    printf("%s %s\n", last, first);



    FILE* inFile = NULL;

    inFile = fopen(csvfile , "r");
    if (inFile == NULL) {
        printf("Could not open file myfile.txt.\n");
        return -1;
    }

    while(fgets(arr, 3000, inFile)!= NULL){
        fgets(arr, 3000, inFile);


        char temp[strlen(arr)+1];
        strcpy(temp, arr);
        i = 0;
        char *start=temp;


        while(1){
            char *token = strsep(&start, ",");
            if (token == NULL) break;
            i++;
            if(i == 1){
                char *result;
                result =strstr(token, last);
                if(result){
                    token = strsep(&start, ",");
                    while(1){
                        if (token == NULL) {
                            break;
                        }
                        token = strsep(&start, ",");
                        if (strrchr(token, 'N' || strrchr(token, ' ')) == NULL){
                            if (token == NULL) return grade;
                            currVal = atoi(token);
                            printf("%d", currVal);
                            printf("\n");
                                    }

                }


                }
            }
    }
}


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