爱问知识人 爱问教育 医院库

C语言中怎样读取文件数据并对数据排序再重新写入文件?

首页

C语言中怎样读取文件数据并对数据排序再重新写入文件?

C语言中怎样读取文件数据并对数据排序再重新写入文件,如图,前面两步已经写出,求重新写入的步骤 <br>

C语言中怎样读取文件……
提交回答

全部答案

    2015-07-07 13:55:08
  •   你好,很高兴为您解答。 
    我来回答吧: 首先是两个输入文件: 一个文本文件:scoret。txt 一个二进制文件:scoreb。txt 文本文件scoret。txt我们可以直接编辑(按要求编辑五个学生的姓名和成绩),而二进制文件不易编辑。
       我们先写一个代码,实再将scoret。txt文件转成二进制文件scoreb。txt #include #include #include struct stu { char name[30]; int grade; }; int main() { int i,n; struct stu s[10]; FILE *fpIt,*fpIb; /*输入*/ FILE *fpOt,*fpOb; /*输出*/ fpIt=fopen("scoret。
      txt","r"); fpIb=fopen("scoreb。txt","wb"); if (fpIt==NULL || fpIb==NULL) { printf("File Open Error:\npress any key to exit:\n"); getch(); return -1; } i=0; while (!feof(fpIt)) { fgets(s[i]。
      name,30,fpIt); /*有空格只能这样输入*/ fscanf(fpIt,"%d\n",&s[i]。grade); /*文本输入*/ printf("i=%d,name=%s\t grade=%d\n",i,s[i]。
      name,s[i]。grade); getch(); fwrite(&s[i],sizeof(struct stu),1,fpIb); i++; } n=i; printf("n=%d\n",n); fclose(fpIt); fclose(fpIb); getch(); return 0; } =============== 上面的代码在TC或VC下编辑运行,就可以生成scoreb。
      txt文件。这时scoreb。txt的学生信息与scoret。txt是一样的。 接着就要修改一下scoret。txt文件的内容,重新编辑5个学生的信息给scoreb。txt 这样使得scoret。txt与scoreb。txt分别各有五个学生的信息。
       当然你如果有原始文件的话,上面都是浮云。 下面是你这个问题的重点: #include #include #include #include struct stu { char name[30]; int grade; }; int main() { int i,j,n; struct stu s[10],temp; FILE *fpIt,*fpIb; /*输入*/ FILE *fpOt,*fpOb; /*输出*/ fpIt=fopen("scoret。
      txt","r"); fpIb=fopen("scoreb。txt","rb"); fpOt=fopen("scoreOt。txt","w"); fpOb=fopen("scoreOb。txt","wb"); if (fpIt==NULL || fpIb==NULL || fpOt==NULL || fpOb==NULL) { printf("File Open Error:\npress any key to exit:\n"); getch(); return -1; } n=0; while (!feof(fpIt)) { fgets(s[n]。
      name,30,fpIt); /*有空格只能这样输入*/ fscanf(fpIt,"%d\n",&s[n]。grade); /*文本输入*/ printf("n=%d,name=%s\t grade=%d\n",n,s[n]。
      name,s[n]。grade); getch(); n++; } fclose(fpIt); printf("===========\n"); while (!feof(fpIb) && n<10) { fread(&s[n],sizeof(struct stu),1,fpIb); printf("n=%d,name=%s\t grade=%d\n",n,s[n]。
      name,s[n]。grade); getch(); n++; } printf("n=%d\n",n); fclose(fpIb); /*排序*/ for (i=0;i  grade  grade,s[i]。name); /*写文件*/ for (i=0;i<5;i++) fprintf(fpOt,"%s%d\n",s[i]。name,s[i]。grade); fclose(fpOt); for (i=5;i<10;i++) fwrite(&s[i],sizeof(struct stu),1,fpOt); fclose(fpOt); getch(); return 0; } ============================== 总结: 文本文件一般用: 读:fscanf函数或fgets函数, 写:fprintf函数即可(当然也可以用fputs函数) 二进制文件一般用: 读:fread函数 写:fwrite函数。
       当然二进制文件你如果用记事本打开的话,一般是乱码。你可以弄一个UltraEdit之类的文本编辑器,查看其二进制代码。

    x***

    2015-07-07 13:55:08

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 172-191
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):