2017-01-28 7 views
0

Я хочу заполнить typedef по функции. Я пробовал:Fill typedef struct по специальностям c cc

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

основные функции:

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

После вызова ReadPersontmp со значением Bad Ptr.

+2

Почему (2-й) вызов 'malloc()' внутри 'ReadPerson()'? – alk

+0

Это не имеет никакого смысла, почему вы «mallocing» дважды? –

+0

Проблема может также быть в 'readString()'. Просьба представить минимальный, полный и проверенный пример. –

ответ

0

Возможно, это будет более элегантно, если вы malloc переменную в том же сегменте кода, когда она определена. Если вы определяете «Person * tmp» для хранения информации в main(), то также используйте malloc в main(). Удалить malloc на ReadPerson().