关于C语言动态分配结构体数组

raymondguo008 2009-07-12 02:33:49
想要动态输入学生信息,但是运行时候总出错。
不知道哪里错了。
望高手指点!


#include <stdio.h>

int len;
int i,j;

struct stu {
int num;
char *name;
char sex;
};

struct stu * create() {
struct stu *ps;

printf("Input total students!\n");
scanf("%d",&len);
ps=(struct stu *)malloc(len*sizeof(struct stu));
for(i=0;i<len;i++) {
scanf("%d%s%c\n",&ps[i].num,&ps[i].name,&ps[i].sex);
}
return ps;
}

void myPrint(struct stu *ps) {
for(j=0;j<len;j++) {
printf("%d %s %c\n",ps[j].num,ps[j].name,ps[j].sex);
}
}

main() {
struct stu *p;
p=create();
myPrint(p);
getch();
return 0;
}
...全文
1686 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
raymondguo008 2009-07-12
  • 打赏
  • 举报
回复
谢谢诸位~
raymondguo008 2009-07-12
  • 打赏
  • 举报
回复
第一次在CSDN提问
弱弱问下
怎么给你们加分呀!!!!?
Aeris 2009-07-12
  • 打赏
  • 举报
回复
ps=(struct stu *)malloc(len*sizeof(struct stu));

for(i=0;i<len;i++) {
ps[i].name = (char *)malloc(64); // 选个大小,能够容纳最长的名字
scanf("%d%s%c\n",&ps[i].num,ps[i].name,&ps[i].sex); // 去掉ps[i].name前面的&,其余两个&不变

//...下略


或者如2楼所说,改动一下struct的定义,直接在struct内部放置存放名字的地方

struct stu {
int num;
char name[64]; // 同样,要能容纳最长的名字
char sex;
};

如果这么改的话,那么下面的代码不用改
pengzhixi 2009-07-12
  • 打赏
  • 举报
回复
struct stu {
int num;
char *name;//如果是 指针那么你也要为它分配内存。否则这个成员未初始化。
char sex;
};
raymondguo008 2009-07-12
  • 打赏
  • 举报
回复
能说的详细点吗?
谢谢!
(从java转回来打基础。辛苦啊!)
Aeris 2009-07-12
  • 打赏
  • 举报
回复
char *name;这个成员必须另外分配缓冲区
baihacker 2009-07-12
  • 打赏
  • 举报
回复
struct stu {
int num;
char name[32];
char sex;
};
内容概要:本文主要介绍了C语言中结构体的应用及其相关操作,包括结构体的定义、初始化、成员访问、指针操作以及动态内存分配等。文中详细展示了如何定义结构体类型,创建结构体变量并初始化,通过点运算符或指针法访问结构体成员。此外,还讲解了结构体数组的创建与遍历,结构体作为函数参数传递时的值传递和引用传递的区别,以及结构体内嵌套指针成员的动态内存分配和管理。特别地,文章还涉及了将多个字符串数组合并排序并输出,以及教师-学生关系建模的复杂结构体示例,涵盖了从创建到销毁的完整生命周期管理。 适合人群:具备C语言基础,对结构体有一定了解,希望深入学习结构体高级特性和内存管理的程序员。 使用场景及目标:①理解结构体的基本概念和操作方法;②掌握结构体指针的使用技巧;③学会处理结构体内嵌套指针成员的动态内存分配;④能够实现结构体数组的排序和复杂结构体的设计与管理。 阅读建议:本文内容较为复杂,涉及到较多的动态内存管理和指针操作,建议读者在学习过程中多做笔记,结合代码逐步调试,加深理解。同时,对于结构体的定义和使用,应注重实际应用场景的设计思路,确保理论联系实际。

70,035

社区成员

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

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