C 如何在数组中存储记录?

C 如何在数组中存储记录?,c,arrays,record,C,Arrays,Record,这就是我要做的。我从用户那里得到3个用户输入(姓名、年龄和性别),所有这些输入都是一个记录。例如name=John,age=15,gender=M,这是名为John的人的记录 我正试图制作5条像上面例子一样的记录,并试图将其存储到一个数组中。问题是我不知道怎么做 以下是我迄今为止所做的工作: #include<stdio.h> #include<conio.h> #define Max 40 struct person{ char name[Max];

这就是我要做的。我从用户那里得到3个用户输入(姓名、年龄和性别),所有这些输入都是一个记录。例如name=John,age=15,gender=M,这是名为John的人的记录

我正试图制作5条像上面例子一样的记录,并试图将其存储到一个数组中。问题是我不知道怎么做

以下是我迄今为止所做的工作:

#include<stdio.h>
#include<conio.h>
#define Max 40


struct person{

    char name[Max];
    int age;
    char gender;

};

void inputdetails(struct person *,struct person []);

main()
{

struct person students[5]; //created an array type person to store the records

    struct person k;
    inputdetails(&k,students); //passed the array in to the input details function

}

void inputdetails(struct person *q,struct person hello[])
{
    int i=0;

    for(;i<5;i++)
    {
    printf("Enter name\n");
        gets(q->name);

    printf("Enter age\n");
    scanf("%d",&(q->age));

        fflush(stdin);
    printf("Enter gender\n");
    scanf("%c",&(q->gender));  


}

}
#包括
#包括
#定义最大值40
结构人{
字符名[Max];
智力年龄;
性别;
};
无效输入详细信息(结构人*,结构人[]);
main()
{
struct person students[5];//创建了一个数组类型person来存储记录
结构人k;
inputdetails(&k,students);//将数组传递给inputdetails函数
}
无效输入详细信息(结构人*q,结构人hello[])
{
int i=0;
对于(;iname);
printf(“输入年龄\n”);
scanf(“%d”和(q->age));
fflush(stdin);
printf(“输入性别”);
scanf(“%c”和(q->gender));
}
}
我该怎么做?如何将一条完整的记录存储到数组中,这样当我创建一个函数来显示记录时,我就可以给出一个索引号,这样它就可以显示存储在该索引中的记录了


谢谢您的时间。

for
循环移动到
main
,如下所示:

int main() {
    struct person students[5]; //created an array type person to store the records
    for (int i = 0 ; i != 5 ; i++) {
        inputdetails(&students[i], i);
    }
    return 0;
}
void inputdetails(struct person *q, int pos) {
    // Put all the data into q->...
    printf("Enter name of student %d\n", pos);
    // Do not use gets(), it's a security hazard
    scanf("%39s", q->name);
    ...
}
当前实现创建了一个不必要的
struct person k
,并在
inputdetails
函数内运行循环。假设第二个参数指向大小为5的数组。最后,在循环中,您不断地重新分配同一个临时
结构的元素(指向
k
inside
main()
,这就是
学生
没有被填充的原因


我将
inputdetails
更改为一次读取一个条目。现在
main()
负责数据的放置位置:它依次传递指向
student[]
的每个元素的指针,以及用于打印的student序列号。

您的结构和数组声明是正确的。(注意:我假设您的输入详细信息与上面显示的dasblinkenlight类似。)

要扫描数组的单个元素(例如,数组的第一个元素),请使用

要扫描数组的所有元素,请使用表单的循环

for(i=0; i<5; i++)
{
    inputdetails(&students[i], i);
}

for(i=0;我没有真正理解你想说的。你能再解释一下吗?谢谢。@Shehan.W我编辑了答案,看看解释是否能让事情变得更清楚。
for(i=0; i<5; i++)
{
    inputdetails(&students[i], i);
}