首页 > 解决方案 > 填充结构

问题描述

我正在尝试制作一个 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;
}

虽然我认为我可以处理搜索,但我真的不知道如何进行添加部分。我想让它尽可能简单(我是大一新生)。我的意图是使用结构人员(其中嵌套了学生),然后每当用户调用函数add他们将能够添加一个学生(假设最大值为 10)。我的想法是制作 10 个结构 (struct[m]),每次调用函数add时 m 都会上升,但它似乎不像我预期的那样工作。

我怎样才能让它发生?任何帮助深表感谢。

标签: cstruct

解决方案


typedef struct person* st[10];

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

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

因此,这部分不应作为st类型编译。此外,如果您想在其中创建一个指针数组,您还必须使用malloc更多信息here)在堆上分配这些结构。

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

struct person st[10];

推荐阅读