2016-11-03 2 views
0

Ich habe Probleme beim Einfügen der Datei Wert Zeichenfolge "Elizabeth" in den Vornamen [21]. Ich weiß, es funktioniert, wenn mit einer eigenständigen Variable innerhalb der Funktion, aber ich bin nicht ganz sicher, wie es mit Strukturen zu arbeiten.Ich kann nicht auf das Objekt innerhalb der Struktur zugreifen

#include <stdlib.h> 
struct student_record 
{ 
int student_id; 
int student_age; 
char first_name[21]; 
char last_name[22]; 
}; 

struct student_record_node 
{ 
struct student_record *record; 
struct student_record_node *next; 
}; 

void parseFile(char *filename,struct student_record_node**head); 

int main(int argc, char* argv[]) 
{ 
struct student_record_node *head; 
parseFile(argv[1], &head); 

return 0; 
} 
void parseFile(char *filename, struct student_record_node**head) 
{ 
     FILE *fp; 

     fp = fopen(filename, "r"); //creates a POINTER to "filename" 
     struct student_record_node *new_student; 
     new_student = malloc(sizeof(struct student_record_node)); 

     if(new_student == NULL) 
     {printf("failed"); } 
     fscanf(fp, "%s", new_student->record->first_name); /*problem here*/`` 

} 
+0

Denken Sie darüber nach, wo 'new_student-> record' zeigt. Was hast du ihm zugeteilt? – dave

+0

Ihnen fehlt die Speicherplatzzuweisung für 'new_student-> record'. vor fscanf mache ein malloc für new_student-> record. Dinge werden funktionieren .. Prost .. – aksonlyaks

+0

In 'student_record_node', sollten Sie' record' als 'struct student_record record erklären;' Es ist nicht notwendig, Zeiger für 'record' zu verwenden. Wenn Sie '* record' verwenden, dann reservieren Sie den Speicher dafür, wie bereits erwähnt. –

Antwort

1

Die Erinnerung an record Feld in new_student noch nicht zugeordnet worden ist.

Verwandte Themen