#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;
}
很久没写了,有很多不足,希望见谅!
温馨提示:答案为网友推荐,仅供参考