2017-01-28 1 views
0

Je veux remplir typedef struct par fonction. J'ai essayé:Remplir typedef struct par fonction dans c

typedef struct{ 
    char *first_name, *last_name; 
    int id; 
    Date birthday; 
} Person; 

void ReadPerson(Person* person){ 
    person = (Person*)malloc(sizeof(Person)); 
    person->first_name = readString(); 
    person->last_name = readString(); 
    scanf("%d",&(person->id)); 
    ReadDate(&(person->birthday)); 
} 

la fonction principale:

void main(){ 
    Person *tmp = NULL; 
    ReadPerson(tmp); 
} 

Après avoir appelé ReadPersontmp à Bad valeur Ptr.

+2

Pourquoi le (2ème) appel à 'malloc()' dans ReadPerson() '? – alk

+0

Cela n'a aucun sens, pourquoi faites-vous deux fois la "mallocing"? –

+0

Le problème peut également se trouver dans 'readString()'. Veuillez fournir un exemple minimal, complet et vérifiable. –

Répondre

0

Peut-être que ce sera plus élégant si vous mallocez une variable dans le même segment de code lorsqu'elle est définie. Si vous définissez "Person * tmp" pour stocker l'information dans main(), utilisez aussi malloc dans main(). Supprimez malloc sur ReadPerson().