C语言初学七(动态构造存放学生信息的结构体数组,并按分数大小输出)

/*
	动态存放学生信息的结构体数组,并按成绩排序输出 
*/
#include <stdio.h>
#include <malloc.h>
//定义结构体:复杂数据结构 
struct Student{
   
	int age;
	float score;
	char name[100];
};
//定义函数:输入数据
void input(struct Student * info,int  len){
   
	int i;
	for(i = 0;i < len;i++){
   
		printf("请输入第%d个学生的信息:\n",i+1);
		printf("age = ");
		scanf
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是用 C 语言编写的实现将文件读入结构体数组的函数: ```c #include <stdio.h> typedef struct { char name[20]; int age; float score; } Student; int read_data(Student *students, int max_count, const char *filename) { FILE *fp = fopen(filename, "r"); if (fp == NULL) { return -1; // 打开文件失败,返回错误代码 } int count = 0; while (count < max_count && fscanf(fp, "%s %d %f", students[count].name, &students[count].age, &students[count].score) == 3) { count++; } fclose(fp); return count; // 返回成功读取的记录数 } ``` 上述代码中,我们定义了一个`read_data`函数,该函数接受三个参数:一个指向`Student`结构体数组的指针、数组的最大大小以及要读取的文件名。该函数将尝试打开指定的文件,并使用`fscanf`函数从文件中读取数据,将其存储在结构体数组中。每次成功读取一行数据时,函数将计数器`count`增加1。如果读取的数据数量已经达到了数组的最大大小,函数将停止继续读取。最后,函数将关闭文件并返回成功读取的记录数。 接下来,我们可以编写一个简单的程序来测试这个函数: ```c #include <stdio.h> typedef struct { char name[20]; int age; float score; } Student; int read_data(Student *students, int max_count, const char *filename); int main() { Student students[100]; int count = read_data(students, 100, "data.txt"); if (count == -1) { printf("Failed to open file!\n"); return 1; } printf("Read %d records:\n", count); for (int i = 0; i < count; i++) { printf("Name: %s, Age: %d, Score: %.2f\n", students[i].name, students[i].age, students[i].score); } return 0; } ``` 在上述代码中,我们首先定义了一个`Student`结构体数组并将其传递给`read_data`函数。函数将尝试从`data.txt`文件中读取数据,并将其存储在结构体数组中。如果读取文件失败,我们将输出一个错误消息并退出程序。否则,我们将遍历结构体数组并将每条记录打印出来。 希望这可以帮助你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值