C_rookie
C_rookie

Reputation: 1

Parse file into struct

I'm working on this C project (I'm fairly new to C), where I have to parse data from a file into a 2D array which is an element of a structure defined as follows:

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

The file contains two integers at the top and these integers dictate the size of the 2D array result, while the data to be entered into this array is in a newline below them. Thus far, I have written the following code, but keep getting a segmentation error. I know that the problem lies somewhere between lines 11 and 16, since I have tried the rest of the code after commenting out these lines and it works fine.

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;
}

Please help!

Upvotes: 0

Views: 59

Answers (1)

A2020
A2020

Reputation: 86

You are not allocating space (malloc) to (*MyF).result, before the assignment at line 16. So the pointer is pointing to an invalid location in memory. Also you are assigning the to member result to a single char (instead of a string) with

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

Upvotes: 1

Related Questions