使用scanf读取的字符串未正确存储

时间:2017-06-27 19:23:20

标签: c string pointers struct scanf

我试图在同一个var rootbject = (RootObject)javaScriptSerializer.Deserialize(text, typeof(RootObject)); 中读取一些字符串,但它们似乎没有存储在我希望的位置。

我的功能:

scanf()

例如,当我尝试在typedef struct per { char *firstname, *lastname, *gender, *phone, *address; struct per *next, *previous; } person_t; person_t head; person_t tail; void initialize(person_t *person) { person->firstname = malloc(20); person->lastname = malloc(20); person->gender = malloc(1); person->phone = malloc(15); person->lastname = malloc(50); } void insert() { person_t *person = malloc(sizeof(person_t)); person->next = &tail; person->previous = tail.previous; tail.previous = person; (person->previous)->next = person; initialize(person); scanf("%s %s %s %s %s", person->firstname, person->lastname, person->gender, person->phone, person->address); //END WITH ctrl-C printf("%s", person->firstname); } 中打印值时,我得到的只是垃圾。我确实为每个指针分配了内存。

我已经阅读了一些关于person->firstname的内容,看起来并不是那么好,除了我必须在这种情况下使用它。我不明白随之而来的问题 - 关于缓冲区的问题?我读到的所有内容似乎都有些令人困惑。

你认为问题与它正在将值读入scanf的事实有关吗?我这样说是因为这是我第一次尝试使用它,而且,它没有用。

0 个答案:

没有答案