Разобрать файл в структуру - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над этим C проектом (я довольно плохо знаком с C), где мне нужно проанализировать данные из файла в двумерный массив, который является элементом структуры, определенной следующим образом:

typedef struct {
int x;
int y;
char ** result; 
} gameF;

Файл содержит два целых числа вверху, и эти целые числа определяют размер результата двухмерного массива, а данные, которые нужно ввести в этот массив, находятся под новой строкой под ними. До сих пор я написал следующий код, но продолжаю получать ошибку сегментации. Я знаю, что проблема лежит где-то между строками 11 и 16, так как я попробовал остальную часть кода после закомментирования этих строк, и она работает нормально.

gameF * Parsefile(char * fp){
       FILE * ResData;
       ResData = fopen(fp, "r");
       gameF * MyF = malloc(sizeof(gameF));
       char line[52];
       while(fgets(line, 52, ResData) !=NULL){
               int num = 0;
               if(sscanf(line, "%d %d", &(*MyF).x, &(*MyF).y) != 0){
                       continue;
               }
               int i;                                               // L11
               for(i=0; i<52; i++){
                        if(line[i]==' '){
                                break;
                        }
                        (*MyF).result = line [i];                   // L16
                }
                num ++;
        }
        return MyF;
}

Пожалуйста, помогите!

1 Ответ

1 голос
/ 06 апреля 2020

Вы не выделяете пространство (mallo c) для (* MyF) .result до назначения в строке 16. Таким образом, указатель указывает на недопустимое место в памяти. Также вы присваиваете результат члену отдельному символу (вместо строки) с помощью

(*MyF).result = line [i];
...