C语言文件读取

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h>
#define  MAX_LINE 1024//定义文本最大容量 
struct Student{
		int sno[18];//学号
		char name[20];//姓名
		char sex[20];//性别
		int age;//年龄 
		int chengji;//成绩 
		
	}; 
int lessthan(Student a, Student b) {
    return a.chengji < b.chengji? 1 : 0;
}//交换排序
void sort(Student *student) {
    for (int i = 0; i <20; ++i) {
        for (int j = i + 1; j <20; ++j) {
            if (lessthan(student[i], student[j])) {
                Student tmp = student[i];
                student[i] = student[j];
                student[j] = tmp;
            }
        }
    }
}
void print(Student student) {
    printf("%-10s%-10s%-10s%-10d%-10d%\n",
           student.sno,
           student.name,
           student.sex,
           student.age,
           student.chengji);
}
int main()
{
 Student a[21];//学生集合
 int i,sum=0,max=-1;//sum总分 ,max最高分 
  FILE *fp;//文件指针
 for(i=0;i<20;i++) 
 {
 	scanf("%s %s %s %d %d",a[i].sno,a[i].name,a[i].sex,&a[i].chengji,&a[i].age);
 	if(a[i].chengji>max) max=a[i].chengji;
 	sum+=a[i].chengji;
 }
 printf("平均分是:%.2f\n",sum/20.0);
 printf("不及格的学生有:\n");
 int count=0;
 for(i=0;i<20;i++)
 {
 	if(a[i].chengji<60){
 	print(a[i]);
 	count++;}
 }
   if(count==0) printf("没有不及格的学生\n");
    sort(a) ;
    fp=fopen("data.txt","w");//fopen打开文件,这个文件可以是当前不存在的。“w”以写入的形式打开,“r”以读的形式打开
    if(fp==NULL) //判断如果文件指针为空
    {
        printf("File cannot open! " );
        exit(0);//在以0的形式退出,必须在文件开头有#include <stdlib.h>,stdlib 头文件即standard library标准库头文件
    }
    //写入数据 
    for(i=0; i<20; i++)
    {
        fprintf(fp,"%s %s %s%d%d\n",a[i].sno,a[i].name,a[i].sex,a[i].age,a[i].chengji );//写入指针fp,写入的东西就是刚才的用户输入的d,注意这里的fp没有引号
    } 
    //以下为读出数据 
    for (int i = 0; i <20; ++i) {
        fprintf(fp, "%s %s %s %d %d\n",
                a[i].sno,
                a[i].name,
                a[i].sex,
                a[i].age,
                a[i].chengji);
    }
    printf("排序后的学生信息\n"); 
    for (int i = 0; i <20; ++i) {
        print(a[i]);
    }
    printf("最高分:\n");
     for (int i = 0; i <20; ++i) {
     	if(a[i].chengji==max)
        print(a[i]);
    }
    

    
}
测试数据:
20198907  张三 男 100 17
20192676  李四 女 45  18
20197667  王五 男 99  18
20192344  刘娜 女 76 16
20194567  李伟 男 25 17
20192934  曾派 女 78 19
20198908  颜三 男 90 20
20192677  孟四 女 85 19
20197697  孔五 男 69 19
20192324  郑娜 女 36 19
20194517  吴伟 男 45 19
20192934  周派 女 38 19
20198947  孙三 男 100 19
20192696  钱四 女 45 19
20197607  赵五 男 29 19
20192354  邢娜 女 16 19
20194237  古伟 男 75 19
20192444  薛派 女 78 19
20194557  张伟 男 25 19
20192664  李派 女 78 19


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值