我正在尝试使用 printf 打印出一个名为 point_person 的指针内的字符数组,当我使用它返回用户的名字时,它会打印出很多垃圾,然后最后打印出名称。
代码看起来像这样:
person dequeue_person;
person *point_person = &dequeue_person;
get_person(point_person, 9);
printf("%s", point_person->first_name);
person 是一个 typedef 结构,包含 3 个字符变量:first_name[64]、last_name[64]、pes_nbr[64]。
输出如下所示:
f÷rnamn:约翰╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ ╠╠╠╠╠约翰
是什么原因造成的,我以后如何避免这种情况?
编辑:填充 first_name 的代码如下所示:
void get_person(person *pers, int index)
{
person per_son;
strcpy(per_son.first_name, queue[(index+head)%QUEUE_MAX_SIZE].first_name);
strcpy(per_son.last_name, queue[(index+head)%QUEUE_MAX_SIZE].last_name);
strcpy(per_son.pers_nbr, queue[(index+head)%QUEUE_MAX_SIZE].pers_nbr);
pers = &per_son;
printf("Förnamn: %s\n", per_son.first_name);
}
编辑2:我自己想出来的。我不得不编辑 get_person 函数并删除 per_son 结构并将 strcpy 更改为 pers 而不是 pers_son。