最近在写C语言的学生管理系统,遇到了关于怎么直接删除文件内容的问题

我找到了两种方法

  • 第一种是这样

    fp = fopen("users.txt", "r+");
    fp1 = fopen("linshi.txt", "w+");//读写新建一个临时文件
    while (fread(p1, sizeof(Node), 1, fp))//从原文件读一个结点
    {if (strcmp(p->denglu.num, p1->denglu.num) != 0)//不是要删除的内容{fwrite(p1, sizeof(Node), 1, fp1);}
    }
    fclose(fp);
    fclose(fp1);
    remove("users.txt");
    rename("linshi.txt", "users.txt");
    
    • 先打开一个临时文件
    • 遇到需要删除的内容则跳过,否则就把内容从原文件读到临时文件内。
    • 直到文件尾,删除原文件,把临时文件改名为原文件

    优点

    • 我觉得这个的有点就是代码量很短。
    • 好理解

    缺点

    • remove();rename();这两个函数容易出错

    下面是错误代码error

    • EROFS 欲写入的文件为只读文件。
    • EFAULT 参数filename 指针超出可存取内存空间。
    • ENAMETOOLONG 参数filename 太长。
    • ENOMEM 核心内存不足。
    • ELOOP 参数filename 有过多符号连接问题。
    • EIO I/O 存取错误。
  • 第二种是在第一种的基础上改进的

    fp = fopen("uses.txt", "r+");
    fp1 = fopen("linshi.txt", "w+");//读写新建一个临时文件
    while (fread(p1, sizeof(Node), 1, fp))//从原文件读一个结点
    {if (strcmp(p->denglu.num, p1->denglu.num) != 0)//不是要删除的内容{fwrite(p1, sizeof(Node), 1, fp1);}
    }
    fclose(fp);
    fclose(fp1);fp1 = fopen("linshi.txt", "r");
    fp = fopen("users.txt", "w+");//刷新 用户 文件
    while (fread(p1, sizeof(Node), 1, fp1))
    {fwrite(p1, sizeof(Node), 1, fp);
    }
    fclose(fp);
    fclose(fp1);
    menu_manager();
    

    优点

    • 就是没有再使用remove();rename();这两个函数,成功率提高了。

    缺点

    • 后面没有删掉linshi.txt这个临时文件。
    • 代码也比之前长了。

C语言_关于文件内容删除的两个方法总结相关推荐

  1. C语言读取txt文件内容

    C语言读取txt文件内容的代码备份. char *readLine(FILE *fp, char *buffer, int *len) {int ch;int i = 0;size_t buff_le ...

  2. java解析string_java读取文件内容为string字符串的方法

    直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 */ private String readCityFile() { File file02 = new File(path_xinfu, ...

  3. java读取string_java读取文件内容为string字符串的方法

    java读取文件内容为string字符串的方法 发布时间:2020-10-02 22:03:04 来源:脚本之家 阅读:67 作者:tmgg 直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 ...

  4. java对文件进行压缩的两种方法

    在工作中,我们或多或少都会接触到文件的压缩和解压,在window系统中,我们只需下载一个能对文件进行解压缩的应用即可,但如果让我们自己动手写对文件压缩的代码,顿时就头大了. 在java中,我们都知道输 ...

  5. JavaBean实现多个文件上传的两种方法

    JavaBean实现多个文件上传的两种方法 王新芳        刘杰 北京工商大学计算机学院 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先 ...

  6. MATLAB 保存imshow绘制图片到指定文件夹中的两种方法

    MATLAB 保存imshow绘制图片到指定文件夹中的两种方法 imwrite函数 imwrite(image,filename) imwrite(image,filename)是将图像数据image ...

  7. SketchUp 2019 文件导入AI的两种方法(附插件)

    作者:TutorialsUp 今天与大家分享TutorialsUp教程 将SketchUp文件导入AI的两种方法 作者通过两种方式,完美地将SU文件导入AI进行编辑. 第一种方法是SketchUp原生 ...

  8. 删除父节点子节点未删除的两种方法

    删除父节点子节点未删除的两种方法 平时所使用的tree删除父节点,子节点还保留在数据库. 删除前: 删除后: 父节点已删除,但数据库保留了子节点数据,以下有两种方法解决 方法一: 使用递归删除方法,我 ...

  9. c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...

    pycharm能干嘛_后端开发 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示 ...

最新文章

  1. 【vue】vue-znly
  2. 黄聪:wordpress文章同步发布到网易、天涯、新浪博客、百度空间插件
  3. php取得文件的大小
  4. Linux网络新技术基石 |​eBPF and XDP
  5. js面向对象的五种写法
  6. loadRunner函数之lr_set_debug_message
  7. Flink on Zeppelin (2) - Batch 篇
  8. 防空系统效能评估软件攻略
  9. Jsoup使用~抓取豆瓣妹子图
  10. CodeSmith连接MySql数据库
  11. 在无线网中,通过添加IP地址连接东芝打印机
  12. 友善串口助手使用教程_友善串口调试助手怎么进行配置-友善串口调试助手使用教程...
  13. 德国留学语言c1,德国留学 纯语言签证和语言加留学签的区别介绍
  14. STL源码剖析-第一章STL概论与版本简介
  15. 敏捷 scrum_敏捷教练,Scrum大师,交付经理
  16. vscode使用chatGPT
  17. ide编辑器 android,从 IDE 到终端 + 文本编辑器
  18. 疯狂Java讲义-泛型
  19. ai智能语音机器人的流程编辑
  20. MTK隐藏导航栏,去掉下拉,永不锁屏,永不灭屏

热门文章

  1. 转:不要去打扰别人的幸福
  2. 计算机组成原理练习题——机器码与加减运算
  3. HyperDAO跨链搭桥:启动万链自由交换时代
  4. 国外问卷调查这个项目可以做吗?
  5. Python的多线程和多进程教程:大大提高效率
  6. 自适应中值滤波器python实现
  7. 如何实现有多少人购买了此商品
  8. 使用java的方式配置Spring---JavaConfig
  9. PPT内常用的五个插件
  10. [云原生专题-22]:K8S - 集群编排工具K8S与SWARM比较与技术选择