填充结构

时间:2019-11-21 23:22:02

标签: c struct

我正在尝试制作一个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]),但似乎没有按我预期的方式工作。

我该如何实现?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

typedef struct person* st[10];

这里您不是要创建数组,而是要定义一个名为st的类型,该类型可以在以后用于声明指向struct person的指针的大小为10的数组

st[m]->surname=getchar();

因此,st是一种类型,因此不应编译此部分。另外,如果要像在此处那样制作一个指针数组,则还必须使用mallocmore info here)在堆上分配这些结构。

我建议您改为在堆栈上分配结构,您可以将typedef行更改为此:

struct person st[10];