我正在尝试制作一个C程序,其中用户可以将多个学生添加到列表中。这样做的目的是创建一个学生数据库(无需访问.txt文件,它只需要能够添加学生,然后通过姓,但不保存)。
struct student{
int semester;
char major[20];
char name[20];
};
struct person{
int id;
char surname[30];
struct student data;
}stud;
typedef struct person* st[10];
int m=0;
int add(){
printf("Type student's surname\n");
st[m]->surname=getchar(); //that's basically the part in which I need help
m=m+1;
}
虽然我认为我可以处理搜索,但我真的不知道该怎么做。我想让它尽可能简单(我是新生)。我的意图是使用结构 person (嵌套有 student ),然后每当用户调用函数 add 时,他们就可以添加一个学生(假设最大为10个)。我的想法是使每次调用 add 函数时m都增加的10个结构(struct [m]),但似乎没有按我预期的方式工作。
我该如何实现?非常感谢您的帮助。
答案 0 :(得分:2)
typedef struct person* st[10];
这里您不是要创建数组,而是要定义一个名为st
的类型,该类型可以在以后用于声明指向struct person
的指针的大小为10的数组
st[m]->surname=getchar();
因此,st
是一种类型,因此不应编译此部分。另外,如果要像在此处那样制作一个指针数组,则还必须使用malloc
(more info here)在堆上分配这些结构。
我建议您改为在堆栈上分配结构,您可以将typedef
行更改为此:
struct person st[10];