用C语言编写 文件读写

题目描述
某班开设有英语、数学、程序设计三门课程,该班同学不多于50人。分别编写程序下列要求的4个小程序
1. 读入该班同学信息, 将信息保存在文本文件students.txt中。
2. 读入该班同学信息, 将信息保存在二进制文件students.dat中。
3. 从文本文件students.txt中读入该班同学信息,排序后按总成绩从高到底输出。
4. 从在二进制文件students.dat读入该班同学信息,排序后按总成绩从高到底输出。

样例输入
张三 80 90 88
李四 66 80 90
王五 50 78 87
Jack 68 86 70
Tom 60 88 96
样例输出
姓名 英语 数学 程序设计 总分
张三 80 90 88 258
Tom 60 88 96 244
李四 66 80 90 236
Jack 68 86 70 224
王五 50 78 87 215

第一种:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student   //结构体
{
 char name[20];  //姓名
 int english; //英语
 int math; //数学 
 int program;  //程序设计
}s[50];
void daoru(struct student s[], int* n) //文件导入函数
{
 FILE *p;
 int i=*n;
 if((p=fopen("students.txt", "r"))==NULL)
 {
  printf("无法打开此文件!");
 }
 else
 {
  while(!feof(p))
  {
   fscanf(p, "%s%d%d%d", s[i].name, &s[i].english, &s[i].math, &s[i].program);
   i++;
   *n=*n+1;
  }
 }
 fclose(p);
}
void paixu(struct student s[], int n) //排序函数
{
 int i, j;
 struct student stu;
 int allscore[2];
 for (i=0; i<n-1; i++)
 {
  for (j=i+1; j<n; j++)
  {
   allscore[0]=s[i].english+s[i].math+s[i].program;
   allscore[1]=s[j].english+s[j].math+s[j].program;
   if (allscore[0]<allscore[1])
   {
    stu=s[i];
    s[i]=s[j];
    s[j]=stu;
   }
  }
 }
}
void dayin(struct student s[], int n)  //显示所有信息
{
 int i;
 printf("\n姓名\t英语\t数学\t程序设计\t总分\n");
 for (i=0; i<n; i++)
 {
  printf("%s\t%d\t%d\t%d\t\t%d\n",s[i].name, s[i].english, s[i].math, s[i].program, (s[i].english+s[i].math+s[i].program));
 }
}
int main()  //主函数
{
 int k, n=0;
 daoru(s, &n);
 paixu(s, n);
 dayin(s, n);
 return 0;
}

输出结果:

第二种二进制的导入也差不多,这里就不写了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-20
#include<stdio.h>
int main()
{
int a[10],b[10],sum=0,i;
FILE *Fp;
Fp=fopen("f1.txt","w");
for(i=0;i<10;++i)
{
scanf("%d",&a[i]);
fprintf(Fp,"%d\n",a[i]);
}
fclose(Fp);
Fp=fopen("f1.txt","r");
for(i=0;i<10;++i)
{
fscanf(Fp,"%d",&b[i]);
printf("%d\n",b[i]);
sum+=b[i];
}
printf("\n%d\n",sum);
fclose(Fp);
return 0;
}

#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
FILE *Fp,*Fq;
if((Fp=fopen("f1.txt","r"))==NULL)
{
printf("Can not open f1.txt\n");
exit(0);
}
if((Fq=fopen("f3.txt","w"))==NULL)
{
printf("Can not open f3.txt\n");
exit(0);
}
while((a=fgetc(Fp))!=EOF)
{
fputc(a,Fq);
}
fclose(Fp);
fclose(Fq);
return 0;
}本回答被网友采纳