typedef struct school_ {
char *name;
char *state;
} School;
Выше приведен структурный формат, который мне необходимо использовать для хранения данных из файла в формате
имя, состояние
имя2, состояние2
НижеМне дали объявление массива указателей, и во второй строке указывается, как вызывается функция.
School *TOP100[school_size];
input_schools(school_info,TOP100,school_size);
В моей функции мне нужно сохранить динамическую строку в качестве имени для каждой из 100 школ.
Я написал следующее, однако получил ошибку сегмента.Как я могу изменить свою функцию без изменения кода выше ?
void input_schools(FILE *IN, School **Sch, int k) {
printf("in input_schools() ... \n\n\n");
int i, j = 0;
char ch;
for (i = 0; i < k; i++) {
fscanf(IN, "%c", &ch);
Sch[i]->name = (char *) malloc(sizeof (char));
j = 0;
Sch[i]->name[j] = ch;
while (ch != ',') {
fscanf(IN, "%c", &ch);
j++;
Sch[i]->name = (char *) realloc(Sch[i]->name, sizeof(char) * (j + 1));
Sch[i]->name[j] = ch;
}
Sch[i]->name[j - 1] = '\0';
}
return;
}
Пока этот код компилируется, он возвращает ошибку сегмента.