在C语言的文件操作中,如何修改文件的内容。读了很多资料发现很难直接在原来的文件中直接修改,一种间接的方法是,先将原来的文件修改的内容存放到一个临时文件中,接着将原来的文件删除,最后将临时文件名改为原来的文件。下面的例子展示这个操作的过程。在这个例子中,原来的文件中是存放了一些四则运算的例子,如下图:

#include <stdio.h>
#include <string.h>

int oper(int a, int b, char op) {
switch (op) {
case ‘+’:return a + b;
case ‘-’:return a - b;
case '':return a * b;
case ‘/’:return a / b;
}
}
//这个函数用来获取某一个字符在字符串中最后的位置下标
int findLastChar(char
src, char ch) {
int pos = -1;
for (int i = 0; src[i] != ‘\0’; i++) {
if (src[i] == ch)pos = i;
}
return pos;
}
//从src字符串中取子串,位置从start到end,包含start和end位置。
char* getSubStr(char* src, int start, int end) {
int i, j;
char* p = (char*)calloc(sizeof(char), 100);
for (i = start, j = 0; i<=end; i++, j++) {
p[j] = src[i];
}
return p;
}

void main(int argv,char args[]) {
int a, b;//a,b分别用来存放四则运算的两个操作数
char op; //c用来存放四则运算的操作符
char oldPathName[100];
char tempPathName;
int pos;
strcpy(oldPathName, args[1]);//将从main函数参数输入的文件路径和文件名复制到oldPathName中
FILE
fp = fopen(oldPathName, “r+”);
pos = findLastChar(oldPathName, ‘\’);//找到最后一个’\‘字符的位置,用来取出路径
tempPathName = getSubStr(oldPathName, 0, pos);//从oldPathName字符串第一个字符开始到最后一个’\'字符结束,取出原来文件的路径
strcat(tempPathName,“temp.txt”); //在同一个路径下,新建一个temp.txt临时文件,用来临时存放修改后的数据。这里是组合成一个新的临时文件路径和文件名
FILE
fpw = fopen(tempPathName, “w”);
while (!feof(fp)) {
fscanf(fp, “%d%c%d”, &a, &op, &b); //从原来的文件读取操作数和操作符
if (feof(fp))break;//如果文件到达结尾则结束,这个判断用来防止最后一个数据存放两次,因为feof函数是判断最后一个位置前面的位置。
fprintf(fpw, “%d%c%d=%d\n”, a, op, b, oper(a, op, b));//运算表达式和结果,写到临时文件中
}
//要先关闭两个文件才能执行后面的删除和更名操作。
fclose(fp);
fclose(fpw);
remove(oldPathName);//将原来的文件删除
rename(tempPathName,oldPathName); //将临时文件名改为原来的文件名,路径也是一样的

}

经过上面程序运行后,结果如下:

C语言中修改文件内容相关推荐

  1. Linux系统中修改文件内容

    1.进入文件:vim 文件名 vim common.js 2.查找待修改内容位置 : (1)按住shift输入":",使文件变成可查询状态 (2)输入 "/" ...

  2. linux中vi修改文件内容,linux VI模式下批量修改文件内容

    1.         :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2.         :n,$ ...

  3. python批量处理excel文本改为数字_Python批量修改Excel中的文件内容

    import os import xlrd from xlutils.copy import copy def base_dir(filename=None): return os.path.join ...

  4. linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行

    文章目录 0.sed -i与sed 1.修改文件内容 2.在文件中插入行 3.在文件中删除行 4.使用find查找文件,并用 | xargs传输文件名给sed命令 0.sed -i与sed sed - ...

  5. 批量修改文件内容(Python版)

    目录 前言 一.为什么选择 python 二.使用步骤 1.搜索 2.替换 3 整合 4 脚本使用 前言 接上文 批量修改文件内容 一.为什么选择 python 近年来 Python 的使用率越来越高 ...

  6. 【C语言复习】C语言中的文件操作

    C语言中的文件操作 写在前面 文件操作 什么是文件 文件的分类 文件名 文件的操作 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 fseek ftell rewind feof 写在前面 ...

  7. C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)

    c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码.有利于整理思路.使代码脉络更加 ...

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

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

  9. 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )

    文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...

最新文章

  1. [原创] CSS自定义IOS苹果,Android安卓的CheckBox 效果,可以根据文字大小变化而变化,内框显示文字,另外可自定大小,自定颜色...
  2. 用 JMX 检测应用程序
  3. Spring常见问题
  4. The Common Language Runtime (CLR)
  5. Win11 不支持移动任务栏位置;苹果将推出更大尺寸的 iPad Pro;iOS 15 更新 Beta2 版本|极客头条...
  6. ASP.NET 路由
  7. git之配置在Terminal显示git分支
  8. Sql: 去除字符串中的相同的字符串函數
  9. 2-10 TreeView 控件
  10. 每日站立会议10(完结)
  11. 基于51单片机病床呼叫系统proteus仿真设计(protues仿真+源码+报告)
  12. linux蚂蚁矿池教程,蚂蚁矿机Z9使用教程
  13. java零基础到精通全套视频教程
  14. 小米 线刷 android,小米10 Android 11 Beta 1线刷包已放出,安卓11/MIUI 12二选一
  15. excel 方框打钩
  16. 为什么大多公司不要培训班培训出来的Java程序员?
  17. python opencv 显示图片 灰度图片 合并图片 保存图片 纵向合并
  18. web前端入门学习路线{HTML+CSS+JavaScript}最全面的前端教程
  19. 解锁“绿色计算产业白皮书”,海量数据携手绿盟成员共促生态繁荣
  20. 【国信长天蓝桥杯】扩展板⑦ 光敏电阻的使用

热门文章

  1. c# wpf 单选字体_WPF中的字体改善
  2. 测试工具培训的一些建议
  3. 基金投资:招商中证白酒指数(LOF)A
  4. 投稿经验---Word论文快速转Latex模板
  5. 一步一步教你使用虚拟机及安装windows
  6. Vmware ESXi 6.7导出ova操作步骤
  7. 共享汽车管理系统软硬件开发设计
  8. Java经典例题01:求100以内的所有素数并输出
  9. 使用Pandas的read_excel读取复杂Excel表单
  10. 计算机界的传奇人物:高德纳