在C语言中如何文件中的结构体数据打印出来,下面是我的程序,求大神帮忙看看,谢谢了~~

Python014

在C语言中如何文件中的结构体数据打印出来,下面是我的程序,求大神帮忙看看,谢谢了~~,第1张

问题在你从终端输入数据的时候,从终端输入的数据都保存在了缓存里,当你输入数据的时候你做了两个操作,一、输入数据(比如是 9);二、按回车。这样一来你的缓存里其实有两个数据9和回车,所以当你第一个scanf的时候读的是9,第二个scanf的时候读的是回车(\n)。要避免这种情况有两种方法,最直接的是每次在你调用scanf之前清除缓存【fflush(stdin)】,第二种是每次scanf调用完之后调用一次getchar(),并且返回值可以不给任何变量。

>printf("请输入第%d个人的号码:",num)

>scanf("%d",&work[num].id)

=>

printf("请输入第%d个人的号码:",num)

fflush(stdin)

scanf("%d",&work[num].id)

>printf("请输入第%d个人的号码:",num)

>scanf("%d",&work[num].id)

=>

printf("请输入第%d个人的号码:",num)

scanf("%d",&work[num].id)

getchar()

一般是把打印封装成一个函数如:

int printStudent(student* p)

{

printf("%d\n", p->num)

printf("%s",p->name)

return0

}

1.你的char name只能是1个字符,且不能用%s输入输出,要改为char name[10]2.你的scanf("%d,%s,%d,%d,%d",&stu.number,&stu.name,&stu.birthday.year,&stu.birthday.mouth,&stu.birthday.day)用逗号分隔数字和字串,这个是不可以的改为scanf("%d%s%d%d%d",&stu.number,&stu.name,&stu.birthday.year,&stu.birthday.mouth,&stu.birthday.day)这样输入为1 张三 1999 1 1结果就为1张三1999,1,1