关于C语言结构体函数的运用

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:47:06
我先定义了一个学生的结构体,现在想把这个结构体定义为函数,函数里对结构体的各项进行输入,然后把整个结构体的所有内容返回到main函数里面,应该如何实现?想得头都爆炸了,也试了好多办法,就是不断的报错,郁闷啊!
结构体如下:
struct student
{
char name[18];
int id;
char sex;
float chinese;
float math;
float english;
}stu[70];
暂时还没有能解决问题的答案!大家请继续帮帮忙啊!
我的代码是这样的:
struct student
{
char name[18];
int id;
char sex;
float chinese;
float math;
float english;
}stu[70];

struct student inputstu_bylist()
{
struct student stuin[70];
for(int i=0;i<70;i++)
{
fflush(stdin);
printf("请输入学生的姓名");
gets(stuin[i].name);
………
………

}
return stuin;

}

应该怎样在main函数里面写一个句子把这个学生的姓名等的数据返回到main里面去呢?

定义的函数必须有一个结构体的指针参数,将结构体数组首地址传递进去,返回值也应该是一个指针。你的那个操作结构体的函数应该改写,例如这样:
struct student* inputstu_bylist(struct student* stuin)
{

for(int i=0;i<70;i++)
{
fflush(stdin);
printf("请输入学生的姓名");
gets(stuin[i]->name);
………
………

}
return stuin;

}

首先得包含一些头文件,比如#include<stdio.h>
然后用结构体声明一个变量
struct student stu[70];
用循环进行它的变量的输入
for( int i = 0; i < 70; i++)
{
scanf("%s", stu[i].name);
...
}
最后可以用类似于
的形式得到它的变量值。
char str[18] = stu[i].name;
当然,如果要全部取出来也得用循环。

struct student inputstu_bylist()
{
struct student stuin[70]; //你在函数体里定义了变量,在函数返回后,该内存就被释放了

for(int i=0;i<70;i++)
{
fflush(stdin);
printf("请输入学生的姓名");
gets(stuin[i].name);
………
………

}
return stuin;

建议改成指针

"现在想把这个结构体定义为函数"不能明白这句话的意思,"函数里对