c语言小问题(急,在线等)

来源:百度知道 编辑:UC知道 时间:2024/09/22 04:18:56
我的课程设计中,有个模块“数据修改”出现问题我修改时输入年月日输出的是月日和以个错误数据,这个模块的编码如下:
数据修改:输入业主姓名,对文件中相应的数据信息进行修改
void xiugai()
{ stu xs;
char name[20];
system("cls");
printf("\n输入要修改的业主的姓名: ");scanf("%s",name);
if((fp=fopen("people.dat","rb+"))==NULL)
{printf("can't open file!\n");exit(0);}
while(!feof(fp))
{fread(&xs,sizeof(stu),1,fp);
if(strcmp(xs.name,name)==0)
{ printf(" 修改前业主的信息如下:\n");
printf("\n%10s %6s %6s %6s %6s %10s %10s\n","业主姓名","房号","水量"," 单价","水费","收取日期","收费人");
printf("%10s %4d %6.2f %6.2f %6.2f %2d%2d%3d %8s\n",xs.name,xs.fh,xs.sl,xs.dj,xs.sf,xs.rq.year,xs.rq.month,xs.rq.day,xs.sfr);
printf("\n业主姓名 房号 水量 收取日期 收费人\n");
scanf("%s%d%f%d%d%d%s",xs.name,&xs.fh,&xs.sl,&xs.sf

scanf("%s%d%f%d%d%d%s",
xs.name,&xs.fh,&xs.sl,&xs.sf,&xs.rq.year,
&xs.rq.month,
&xs.rq.day,xs.sfr);

scanf("%s %d %f %d %d %d %d %s",-- 格式里加1个 %d
或去掉 ,&xs.sf
格式 -- 变量个数要配套。

在每个scanf的后面调用下面的函数试试:
void eatenter()
{
while(getchar() != '\n');
}