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

如题所述

#include <stdio.h>
#include <stdlib.h>
/**C语言中怎样读取文件数据并对数据排序再重新写入文件*/
int main()
{
FILE *fp,*fpn; //创建文件指针fp和fpn
int a[10],b[10],i,j,temp; //a数组用来存入数据 b数组用来接受文件数据进行重新排序输出
for(i = 0; i < 10; i++)
{
a[i] = i; //初始化赋值
}
if((fp = fopen("data.dat","wb")) == NULL) //以只写的方式打开一个二进制文件,没有则自行建立,有的话就进行覆盖
{
printf("Error!\n");
exit(1);
}
fwrite(a,sizeof(a),1,fp); //进行一次写入,写入sizeof大小,将a写入到fp所指向的文件中
fclose(fp); //写完之后关闭文件指针
if((fpn = fopen("data.dat","rb")) == NULL) //以只读的方式打开一个二进制文件
{
printf("Error!\n");
exit(1);
}
for(i = 0; i < 10; i++)
{
fread(&b[i],sizeof(int),1,fpn); //用循环进行读取,每次读取int大小,从fpn所指向的文件读取,存入b数组中
}
fclose(fpn); //关闭文件指针
for(i = 0; i < 9; i++) //冒泡排序
{
for(j = 0; j < 10 - i - 1; j++)
{
if(b[j] < b[j + 1])
{
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
}
for(i = 0; i < 10; i++) //输出
{
printf("%d\t",b[i]);
}
return 0;
}
很久没写了,有很多不足,希望见谅!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-23
我来回答吧:
首先是两个输入文件:
一个文本文件:scoret.txt
一个二进制文件:scoreb.txt
文本文件scoret.txt我们可以直接编辑(按要求编辑五个学生的姓名和成绩),而二进制文件不易编辑。
我们先写一个代码,实再将scoret.txt文件转成二进制文件scoreb.txt
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct stu {本回答被网友采纳
第2个回答  2018-04-16
c语言读文件 写文件的例子 我能做
相似回答