C语言_关于文件内容删除的两个方法总结
最近在写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语言_关于文件内容删除的两个方法总结相关推荐
- C语言读取txt文件内容
C语言读取txt文件内容的代码备份. char *readLine(FILE *fp, char *buffer, int *len) {int ch;int i = 0;size_t buff_le ...
- java解析string_java读取文件内容为string字符串的方法
直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 */ private String readCityFile() { File file02 = new File(path_xinfu, ...
- java读取string_java读取文件内容为string字符串的方法
java读取文件内容为string字符串的方法 发布时间:2020-10-02 22:03:04 来源:脚本之家 阅读:67 作者:tmgg 直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 ...
- java对文件进行压缩的两种方法
在工作中,我们或多或少都会接触到文件的压缩和解压,在window系统中,我们只需下载一个能对文件进行解压缩的应用即可,但如果让我们自己动手写对文件压缩的代码,顿时就头大了. 在java中,我们都知道输 ...
- JavaBean实现多个文件上传的两种方法
JavaBean实现多个文件上传的两种方法 王新芳 刘杰 北京工商大学计算机学院 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先 ...
- MATLAB 保存imshow绘制图片到指定文件夹中的两种方法
MATLAB 保存imshow绘制图片到指定文件夹中的两种方法 imwrite函数 imwrite(image,filename) imwrite(image,filename)是将图像数据image ...
- SketchUp 2019 文件导入AI的两种方法(附插件)
作者:TutorialsUp 今天与大家分享TutorialsUp教程 将SketchUp文件导入AI的两种方法 作者通过两种方式,完美地将SU文件导入AI进行编辑. 第一种方法是SketchUp原生 ...
- 删除父节点子节点未删除的两种方法
删除父节点子节点未删除的两种方法 平时所使用的tree删除父节点,子节点还保留在数据库. 删除前: 删除后: 父节点已删除,但数据库保留了子节点数据,以下有两种方法解决 方法一: 使用递归删除方法,我 ...
- c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
pycharm能干嘛_后端开发 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示 ...
最新文章
- 【vue】vue-znly
- 黄聪:wordpress文章同步发布到网易、天涯、新浪博客、百度空间插件
- php取得文件的大小
- Linux网络新技术基石 |​eBPF and XDP
- js面向对象的五种写法
- loadRunner函数之lr_set_debug_message
- Flink on Zeppelin (2) - Batch 篇
- 防空系统效能评估软件攻略
- Jsoup使用~抓取豆瓣妹子图
- CodeSmith连接MySql数据库
- 在无线网中,通过添加IP地址连接东芝打印机
- 友善串口助手使用教程_友善串口调试助手怎么进行配置-友善串口调试助手使用教程...
- 德国留学语言c1,德国留学 纯语言签证和语言加留学签的区别介绍
- STL源码剖析-第一章STL概论与版本简介
- 敏捷 scrum_敏捷教练,Scrum大师,交付经理
- vscode使用chatGPT
- ide编辑器 android,从 IDE 到终端 + 文本编辑器
- 疯狂Java讲义-泛型
- ai智能语音机器人的流程编辑
- MTK隐藏导航栏,去掉下拉,永不锁屏,永不灭屏