c语言debug与输出不符

debug都是正常的但一输出不一样了
想知道是哪里出了问题

img

/结构体定义/
typedef struct link_person {
char name[20];//姓名
char gender[6];//性别
int age;//年龄
char post[8];//职位
char password[8];//密码
char telephonenumber[11] ;//电话号
struct link_person* next;
}person;

person* setup(person* phead) {

FILE* fp0 = NULL;
FILE* fp1 = NULL;

fp0 = fopen("C:\\Users\\zhaoyue\\Desktop\\person.txt", "r");//初始表格
fp1 = fopen("C:\\Users\\zhaoyue\\Desktop\\person1.txt", "w");//数据文件

if (fp0 == NULL) //判断是否正常打开文件
{
    printf("读取表格失败\n\n");
    exit(0);
}
else
{
    printf("读取表格成功\n\n");
}

if (fp1 == NULL) //判断是否正常打开文件
{
    printf("打开目标文件失败\n\n");
    exit(0);
}
else
{
    printf("打开目标文件成功\n\n");
}

//链表初始化
person * p,* p0;
phead = (person*)malloc(sizeof(person));
phead->next = NULL;//例化
int i=0;
while (!feof(fp0))
{
    p = (person*)malloc(sizeof(person));
    fscanf(fp0, "%s %s %d %s %s %s\n", &p->name, &p->gender, &p->age, &p->post, &p->password, &p->telephonenumber);
    if(i==0) p0=phead=p;
    else
    {
        p->next=NULL;
        p0->next=p;
        p0=p;
    }
    i++;
}
p = phead;
while (p != NULL)
{
    fprintf(fp1,"%s %s %d %s %s %s\n",p->name, p->gender, p->age, p->post, p->password, p->telephonenumber);
    p = p->next;
}

fclose(fp0);
fclose(fp1);
return phead;

}

int main()
{
person* phead,*p;
phead=setup(phead);
p=phead;
printf("%s",phead->password);
return 0;
}

我猜測是沒有字符串結束符'\0', 所以被連續輸出了, 可以嘗試下char pwd[9] = {'\0'};
沒有'\0', 所以pwd僅被視作字符數組而非字符串