Я застрял в этом проекте большую часть недели, и пока я перебирал синтаксические ошибки.
Суть проекта - прочитать заголовки и остановиться на определенном этапе. столбец и найти определенные характеристики, такие как мин, максимум и среднее значение столбца. Тем не менее, я испытываю трудности с распределением памяти для этой работы. До сих пор мне не удавалось продвинуть свой код, потому что я продолжаю получать ошибку с пометкой Segmentation Fault: 11
.
. Раздел, выделенный жирным шрифтом, - это то, к чему я сузил проблему. Я знаю, что есть проблема с памятью, но я не могу понять, почему fgets не читает в первой строке файла из функции. Файл также не возвращает NULL и может быть доступен. Динамические массивы - вариант, но я новичок и очень незнаком с ними.
double getMin(char csvfile[], char column[])
{
int counter= 0;
int counter2= 0;
char* token;
char type;
char activity[20];
int chap, sec;
int min = -1000;
char header[20];
char *res;
char row[3000];
char Toprow[3000];
sscanf(column, "%c%d.%d", &type, &chap, &sec);
if (type!='P' && type!='C' && type!='L') return -2.0;
if (chap<=0 || sec<=0) return 0;
if(type == 'c' || type == 'C'){
sprintf(activity,"%challange", type);
}
else if(type == 'P' || type == 'p'){
sprintf(activity,"%carticipation", type);
}
else {
sprintf(activity,"%cab", type);
}
sprintf(header, "%d.%d - %s", chap, sec, activity);
FILE* inFile = NULL;
inFile = fopen("array.csv","r");
//This is where the trouble begins that Ive narrowed down to
while(!feof(inFile)){
fgets(Toprow, 3000, inFile);
while(token != NULL){
counter = counter + 1;
token = strsep(&Toprow, ",");
printf("%s", token);
res = strstr(token, header);
if(res){
break;
token = NULL;
}
}
}
while (!feof(inFile)) {
int currVal= 0;
fgets(row, 3000, inFile);
if(feof(inFile)) break;
while( (token = strsep(&row, ',')) != NULL){
++counter2;
if(counter2 == counter){
res = strstr(token, header);
if(!res){
int currVal = atoi(*token);
if(currVal > min)
min = currVal;
counter2 = 0;
break;
}
}
}
}
return min;
}
Файл Excel выглядит для справки введите описание изображения здесь