enter code here
Это только часть моего кода, но после использования программы отладки я смог сузить, что ошибка сегментации происходит из-за доступа к i
в цикле while.
Это входные данные:
30218294 Super Man 2.9
39324809 Spider Man 3.5
48201093 Papa Smurf 1.9
39482010 Mickey Mouse 3.2
49384832 Minnie Mouse 3.4
-1
Я попытался установить i = 0
перед циклом и изменить условия цикла while.
#include <stdio.h>
#include <cstring>
#include <string.h>
#include <stdlib.h>
struct student{
char fname[100];
char lname[100];
int euid;
float gpa;
};
/* Reads the data from a file and stores it in the array of structs */
void readData(struct student *db, int *size)
{
const char* file_name = "input";
FILE *infile;
infile=fopen(file_name,"r");
int i=0, euid;
fscanf(infile,"%d",&euid);
while(euid > 0){
db[i].euid = euid; //**ERROR: Segmentation Fault**
fscanf(infile,"%s%s%f%d",db[i].fname,db[i].lname,&db[i].gpa,&euid);
i++;
}
fclose(infile);
*size = i;
}
int main(void)
{
int size;
struct student* db[100];
/* read info from file */
readData(*db,&size);
return 0;
}
Программа получила сигнал SIGSEGV, Ошибка сегментации. 0x00400729 в readData (дБ = 0xb7fe173d, размер = 0xbffff278) на func.c: 17 17 дБ [i] .euid = euid;