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

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 00:37
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部