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

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

#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 = 0i <10i++)

{

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 = 0i <10i++)

{

fread(&b[i],sizeof(int),1,fpn)//用循环进行读取,每次读取int大小,从fpn所指向的文件读取,存入b数组中

}

fclose(fpn) //关闭文件指针

for(i = 0i <9i++) //冒泡排序

{

for(j = 0j <10 - i - 1j++)

{

if(b[j] <b[j + 1])

{

temp = b[j]

b[j] = b[j+1]

b[j+1] = temp

}

}

}

for(i = 0i <10i++) //输出

{

printf("%d\t",b[i])

}

return 0

}

很久没写了,有很多不足,希望见谅!

顺序不对 先凳贺读 然后再删除

fp=fopen("a.dat","rb")

fread(&n,sizeof(int),n,fp)

del()(删除内容)

fclose

fp=fopen("a.dat","rb")

fwrite(&n,sizeof(int),n-1,fp);

fclose

同时要注意删闹亩除时候数据的连续 以及后续写入的大小

另外 你的fread(&n,sizeof(int),n,fp)

这里两个枣弯派n必须是不同的

前一个是一个数据的buffer 后一个是代表数据的总长度


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8150963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存