用C语言实现一个简单的学生信息的输入和输出,但是程序用VS2015调试出现问题,请大神帮忙看下是哪里出现了问题

crazybears 2019-04-12 07:36:44
用C语言实现一个简单的学生信息的输入和输出,但是程序用VS2015调试出现问题,在执行输入函数的第二次循环的时候,就直接结束了
请大神看下是哪里出了问题,谢谢.

/*输入学生的信息并输出*/
#include <stdio.h>

struct student
{
int num;
char name[50];
float score;
};

//输入函数
void input(struct student **p, int len)
{
int i;
for (i = 0;i < len;i++)
{
printf("请输入学生的学号:");
scanf_s("%d", &p[i]->num);
printf("请输入学生的姓名:");
scanf_s("%s", p[i]->name, 49);
printf("请输入学生的成绩:");
scanf_s("%f", &p[i]->score);
}
}
int main(void)
{
int len;
int i;
struct student *pArr;

printf("请输入要录入学生信息的学生的个数\n");
scanf_s("%d",&len);

pArr = (struct student *)malloc(len*sizeof(struct student));

//输入
/*for (i = 0;i < len;i++)
{
printf("请输入学生的学号:");
scanf_s("%d",&pArr[i].num);
printf("请输入学生的姓名:");
scanf_s("%s", pArr[i].name,49);
printf("请输入学生的成绩:");
scanf_s("%f", &pArr[i].score);
}*/

input(&pArr,len); //调用函数
//输出
printf("学号\t姓名\t成绩\n");
printf("------------------------------\n");
for (i = 0;i < len;i++)
{
printf("%d\t%s\t%.2f\n",pArr[i].num,pArr[i].name,pArr[i].score);
}

return 0;
}
输出结果:
------------------------------------
请输入要录入学生信息的学生的个数
3
请输入学生的学号:1
请输入学生的姓名:1
请输入学生的成绩:1
请输入学生的学号:2
请按任意键继续. . .
-------------------------------------
...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
coo135 2019-04-12
  • 打赏
  • 举报
回复
楼上正解,简单明了,你非得传 **p的话,你要把scanf_s("%d", &p[i]->num);中的 p[i] 改成 (*p+i),例如改成scanf_s("%d", &(*p+i)->num);,你仔细体会一下,相信会有收获的。
crazybears 2019-04-12
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
[quote=引用 2 楼 crazybears 的回复:] [quote=引用 1 楼 stherix 的回复:] void input(struct student *p, int len) { int i; for (i = 0; i < len; i++) { printf("请输入学生的学号:"); scanf_s("%d", &p[i].num); printf("请输入学生的姓名:"); scanf_s("%s", p[i].name, 49); printf("请输入学生的成绩:"); scanf_s("%f", &p[i].score); } } 调用也不用加&
----------------------------- 用%s输入,不加也可以吧,,刚试了下,还是没有用.[/quote] 我说的是input调用的时候不用加& , input(pArr,len); [/quote] --------------------- 解决了,谢谢
stherix 2019-04-12
  • 打赏
  • 举报
回复
引用 4 楼 crazybears 的回复:
不用函数的时候运行的一点问题都没有,所以怀疑调用函数出问题了
你改成我的写法,然后input调用的时候pArr的&去掉 指针已经就是个数组了,没必要用二维数组
crazybears 2019-04-12
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
void input(struct student *p, int len) { int i; for (i = 0; i < len; i++) { printf("请输入学生的学号:"); scanf_s("%d", &p[i].num); printf("请输入学生的姓名:"); scanf_s("%s", p[i].name, 49); printf("请输入学生的成绩:"); scanf_s("%f", &p[i].score); } } 调用也不用加&
-------------------------------- 不用函数的时候运行的一点问题都没有,所以怀疑调用函数出问题了
stherix 2019-04-12
  • 打赏
  • 举报
回复
引用 2 楼 crazybears 的回复:
[quote=引用 1 楼 stherix 的回复:] void input(struct student *p, int len) { int i; for (i = 0; i < len; i++) { printf("请输入学生的学号:"); scanf_s("%d", &p[i].num); printf("请输入学生的姓名:"); scanf_s("%s", p[i].name, 49); printf("请输入学生的成绩:"); scanf_s("%f", &p[i].score); } } 调用也不用加&
----------------------------- 用%s输入,不加也可以吧,,刚试了下,还是没有用.[/quote] 我说的是input调用的时候不用加& , input(pArr,len);
crazybears 2019-04-12
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
void input(struct student *p, int len) { int i; for (i = 0; i < len; i++) { printf("请输入学生的学号:"); scanf_s("%d", &p[i].num); printf("请输入学生的姓名:"); scanf_s("%s", p[i].name, 49); printf("请输入学生的成绩:"); scanf_s("%f", &p[i].score); } } 调用也不用加&
----------------------------- 用%s输入,不加也可以吧,,刚试了下,还是没有用.
stherix 2019-04-12
  • 打赏
  • 举报
回复
void input(struct student *p, int len) { int i; for (i = 0; i < len; i++) { printf("请输入学生的学号:"); scanf_s("%d", &p[i].num); printf("请输入学生的姓名:"); scanf_s("%s", p[i].name, 49); printf("请输入学生的成绩:"); scanf_s("%f", &p[i].score); } } 调用也不用加&

69,371

社区成员

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

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