По сути, мне нужно пройти через строки файла 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;
}