- 创建一个文本文件t1.txt,在其中输入10个学生的学号、姓名、3门课成绩;
- 编一个程序,读取文本文件t1.txt中的学生信息,求每个学生的平均分,并按平均分将学生信息进行排序;
- 将排序之后的学生信息输出到文本文件t2.txt中。
学生信息定义如下:
struct student
{int num;
char name[10];
float cj[4]; //cj[3]表示平均分。
}
这个关于文件的程序怎么写?
c语言文件有关的一个例子不会做
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-天际的海浪 2021-12-05 19:15关注
#include <stdio.h> #include"string.h" #include <stdlib.h> #define N 100000 struct st{ char a[15]; char b[20]; int x,y,z; }; int fun1(int *x,int *y) { int t; t=*x; *x=*y; *y=t; } int fun2(char *x,char *y) { char *t; strcpy(t,x); strcpy(x,y); strcpy(y,t); } int main() { /*_________________________________________________*/ FILE *fp,*ok; char b[N + 1]; //判断文件是否打开 if ( (fp = fopen("D:\\操作文件1号.txt", "r")) == NULL )/*这里D:\\操作文件1号.txt 是路径;读取D盘下,名为(操作文件1号)的文本文件*/ { puts("操作文件1号读取失败!"); exit(0); } else { puts("操作文件1号读取成功"); puts("开始计算"); } /*__________________________________________*/ struct st s[111]; char t[20],str[N]; int aver[111]={0}; for(int i=0;i<5;i++) { fscanf(fp,"%s%s%d%d%d",s[i].a,s[i].b,&s[i].x,&s[i].y,&s[i].z); printf("%s %s %d %d %d\n",s[i].a,s[i].b,s[i].x,s[i].y,s[i].z); } printf("按平均成绩排序\n"); for(int i=0;i<5;i++) { aver[i]=(s[i].x+s[i].y+s[i].z)*1.0/3; } printf("\n"); for(int i=0;i<5;i++) { for(int j=0;j<4-i;j++) { if(aver[j]<aver[j+1]) { fun2(s[j].a,s[j+1].a); fun2(s[j].b,s[j+1].b); fun1(&aver[j],&aver[j+1]); fun1(&s[j].x,&s[j+1].x); fun1(&s[j].y,&s[j+1].y); fun1(&s[j].z,&s[j+1].z); } } } if ( (ok = fopen("D:\\操作文件2号.txt", "w")) == NULL )/*D:\\操作文件2号.txt 是路径;写入D盘下,名为(操作文件2号)的文本文件*/ { puts("操作文件2号写入失败!"); exit(0); } else { puts("操作文件2号写入成功"); } for(int i=0;i<5;i++) { fprintf(ok,"第%d名;%s %s %d %d %d\n",i+1,s[i].a,s[i].b,s[i].x,s[i].y,s[i].z); printf("第%d名;%s %s %d %d %d\n",i+1,s[i].a,s[i].b,s[i].x,s[i].y,s[i].z); } /*___________________________________________*/ //结束关闭文件 fclose(ok); fclose(fp); return 0; }
如果对你有帮助,可以给我个采纳吗,谢谢!!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 蓝桥oj3931,请问我错在哪里
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染