对结构体输入值时出现问题,请各位帮忙看看!

demon_yq 2010-12-19 08:52:06
#include <stdio.h>
#include <string.h>
struct student
{
long stdnum;
short age;
char name[20];
char sex;
float score[4];
float averscore;
};
void main()
{
int i,j;
struct student stu[3];
for(i=0;i<3;i++)
{ printf("Name:\n");
gets(stu[i].name);
printf("student num age sex\n");
scanf("%10ld %2d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex);
printf("score:\n");
for(j=0;j<4;j++)
{
scanf("%5.2f",&stu[i].score[j]);
};
};
}
输入会出现问题,请各位帮忙看看
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
demon_yq 2010-12-20
  • 打赏
  • 举报
回复
调试的时候name开始写入了数据,但写入stdnum age sex以后里面的数据没了。。。
logiciel 2010-12-20
  • 打赏
  • 举报
回复
char sex;

sex定义为1个字符,但输入时用了%s:

scanf("%10ld %2d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex);

最好改sex定义:
char sex[7]; //允许输入femail

prohibit 2010-12-19
  • 打赏
  • 举报
回复
//scanf("%10ld %2d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex);
scanf("%ld %d %s",&stu[i].stdnum,&stu[i].age,&stu[i].sex);//最好也改成这样
就想叫yoko 2010-12-19
  • 打赏
  • 举报
回复
楼上正解
woods2001 2010-12-19
  • 打赏
  • 举报
回复
http://virus.blog.51cto.com/51437/21395
woods2001 2010-12-19
  • 打赏
  • 举报
回复
问题7:(输入数据时,企图规定精度)
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。
woods2001 2010-12-19
  • 打赏
  • 举报
回复
scanf("%5.2f",&stu[i].score[j]);这句出的问题
你改成scanf("%f", &stu[i].score[j]);

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧