问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 修改文件中的数据

发布网友 发布时间:2022-05-27 18:52

我来回答

3个回答

热心网友 时间:2023-11-18 11:50

  有三种方法可以实现,分别如下:

  第1种、将文件中数据读入内存中,修改后,清空源文件,存入新数据。

  第2种、以读写的方式打开文件,将文件指针移动到要修改的地方,写入新数据。新数据将会覆盖掉旧数据。

  第3种、以读写的方式打开文件,将文件指针定位到需要修改数据的末尾,然后删除需要修改的数据(通过循环n次执行fputc(8,fp),直到清空需要修改的数据为止,8为退格键对应的ascii)。 然后计算需要加入的新数据长度,通过fputc(32,fp)来添加空格到文件中(32为空格键的ascii). 然后根据指针位置,填入数据覆盖掉这些空格。

  注意:第1种方法适合数据量较小的情况,第2种、第3种适合数据量较大的情况。

  提供一个参考代码,如下:

#include "stdio.h"
main()
{
    FILE *in=fopen("f:\\test.txt","r");
    FILE *out=fopen("f:\\back.txt","w");  /*out是充当临时文件作用*/
    int ch=0;
    if(!in)
    {
        printf("cann't open test.txt\n");
        exit(1);
    }
    if(!out)
    {
        printf("cann't create back.txt\n");
        exit(1);
    }
        /*开始复制*/
    while(!feof(in))
    {
       ch=fgetc(in);
       if(ch=='a') ch='p';
       fputc(ch,out);
    }
    fclose(in);  fclose(out);  
    unlink("f:\\test.txt"); /*删除test.txt*/
    rename("f:\\back.txt","test.txt"); /*改名*/
    printf("ok!!!!!!\n");
 
}

热心网友 时间:2023-11-18 11:51

#include<stdio.h>

struct stu{
int xuehao;
char xingming[10];
int chengji;
}stu1={101,"liyun",65};

void main(){
FILE *fp;
fp=fopen("d:\\stu.dat","w");
if(fp==NULL){
printf("文件创建失败!\n");
}
fwrite(&stu1,sizeof(struct stu),1,fp);
fclose(fp);

fp=fopen("d:\\stu.dat","r");
if(fp==NULL){
printf("文件读失败!\n");
}
struct stu tmp;
fread(&tmp,sizeof(struct stu),1,fp);
fclose(fp);
tmp.chengji=80;

fp=fopen("d:\\stu.dat","w");
if(fp==NULL){
printf("文件写失败!\n");
}
fwrite(&tmp,sizeof(struct stu),1,fp);
fclose(fp);

}

热心网友 时间:2023-11-18 11:51

不用哪些重写文件、覆盖文件的方法

C语言中可以实现在文件的指定位置实现局部修改,而无需重写文件的其他部分

详细请见:CSDN网页链接

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivo y3t手机能拨打和接听电话,不能收发短信 vivoy3t手机突然接收不到短信 vivoy3短信消息怎么提醒 无奈什么意思是什么 怎样让炒出的丝瓜不发黑? 钟表是以什么计量时间 钟表以( )、()、( )计量时间。 钟表以( )、()、( )单位计量时间 紫荆花开放时间 《青春 须臾成殇》渭伊的txt全集下载地址 如何进攻半场人盯人防守 C语言中用文件覆盖法删除文件中数据源代码 圆菇是黄蘑吗?今天去市场人家说圆菇就是黄蘑,是这样的么? 滑子蘑和榆黄蘑是一种蘑菇吗 峨眉黄蘑肉楠蘑菇能吃吗? 根据对患者人身造成的损害程度,医疗事故分为几级 粉碎树木屑里长出的黄色蘑菇 医疗事故分级标准与伤残等级赔偿的关系 山黄蘑是什么蘑菇 在东北还有一种蘑菇叫洋嘟嘟蘑 是什么蘑菇 在松树林里采到的黄蘑菇是什么蘑菇 家里木桩上长了好多这种蘑菇 这是什么蘑菇 叫什么? 黄蘑菇能吃吗 小天才电话手表多少块 黄色的蘑菇叫什么 我想站在领奖台上作文1000 站在颁奖台上的心里描写 当我上台领奖时,我的心情是怎么样的。作文100字 谁有遨游中国2有的发给我谢谢 四川河图景观设计有限公司怎么样? 秀禾服的版型较为重要,有推荐吗? 做了医学会医疗事故鉴定后还能做伤残等级鉴定吗? 我用命名管道写的程序来实现两个进程间的通信,想知道为什么老是不能得到自己想要的结果!! 有没有用PHP生成标准ZIP文件的方法 半场防守 php上传如何替换原图片文件 华为matebook 值得买吗 、篮球有哪四大基本进攻战术?我们学了哪几种? 2、我们学了哪两种集体防守战术? 3、在进攻半场人盯人时 代办注册公司一般多少钱 防腐施工是应注意什么 防腐油漆施工过程及注意事项 法律疑问:买卖不破租赁是否适用动产 买卖不破租赁适用动产吗 动产和不动产都适用买卖不破租赁吗 房屋租赁合同性质 联想笔记本e430c怎么进入选择操作系统界面? launch这软件是做什么用的? 只有.launch文件的java程序如何运行 launch manager是什么软件,有用吗 CATIA V5的渲染教程 北京新增病例与此前病例同餐厅吃饭,与确诊者一起就餐百分百会被感染吗?