名叫黑客的技术小白
2017-03-08 07:53
采纳率: 66.7%
浏览 1.1k
已采纳

c语言 结构体指针输出信息不完整

#include
struct stu{
char *name;

int num;

int age;

char group;

float score;

}stus[5] = {{"Zhou ping", 5, 18, 'C', 145.0},
{"Zhang ping", 4, 19, 'A', 130.5},
{"Liu fang", 1, 18, 'A', 148.5},
{"Wang ming", 3, 17, 'B', 144.5} }, *p=stus;
int main ()
{
int j;
int pjf ( struct stu w[],int i );
int charu ( struct stu a[],int n);
pjf (stus,5);
stus[4]=stus[3];
charu(stus,3);
for(j=0;j<5;j++)
{
printf("%s,%d,%d,%c,%f\n",p[j].name,p[j].num,p[j].age,p[j].group,p[j].score);
}
return 0;
}

int pjf ( struct stu w[],int i )
{
int sum=0;
for(i=0;i<5;i++)
{
sum+=w[i].score;
}
printf ("%f\n",sum/4.0);
return 0;
}

int charu ( struct stu a[],int n)
{

printf("请输入一条记录\n");
scanf("%s,%d,%d,%c,%f",&a[3].name,&a[3].num,&a[3].age,&a[3].group,&a[3].score);

return 0;
}
图片说明

应该输出5组信息但是只有3组,不知道什么原因,跪求大神

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Tiger_Zhao 2017-03-08 08:37
    已采纳

    成员char *name 已经是个指针了,参数&a[3].name什么意思?
    还有使用scanf()时要用足够空间的数组,而不是指针成员。即使没有上面的错误,你也是试图往字符串常量"Wang ming"所在的内存写读取的内容,会溢出边界的。

    点赞 评论
  • blownewbee 2017-03-08 08:25

    你的数组定义在常量区不能修改,需要定义成局部变量

    点赞 评论

相关推荐 更多相似问题