C语言中修改文件内容
在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语言中修改文件内容相关推荐
- Linux系统中修改文件内容
1.进入文件:vim 文件名 vim common.js 2.查找待修改内容位置 : (1)按住shift输入":",使文件变成可查询状态 (2)输入 "/" ...
- linux中vi修改文件内容,linux VI模式下批量修改文件内容
1. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky 2. :n,$ ...
- python批量处理excel文本改为数字_Python批量修改Excel中的文件内容
import os import xlrd from xlutils.copy import copy def base_dir(filename=None): return os.path.join ...
- linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行
文章目录 0.sed -i与sed 1.修改文件内容 2.在文件中插入行 3.在文件中删除行 4.使用find查找文件,并用 | xargs传输文件名给sed命令 0.sed -i与sed sed - ...
- 批量修改文件内容(Python版)
目录 前言 一.为什么选择 python 二.使用步骤 1.搜索 2.替换 3 整合 4 脚本使用 前言 接上文 批量修改文件内容 一.为什么选择 python 近年来 Python 的使用率越来越高 ...
- 【C语言复习】C语言中的文件操作
C语言中的文件操作 写在前面 文件操作 什么是文件 文件的分类 文件名 文件的操作 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 fseek ftell rewind feof 写在前面 ...
- C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)
c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码.有利于整理思路.使代码脉络更加 ...
- c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
pycharm能干嘛_后端开发 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示 ...
- 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )
文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...
最新文章
- [原创] CSS自定义IOS苹果,Android安卓的CheckBox 效果,可以根据文字大小变化而变化,内框显示文字,另外可自定大小,自定颜色...
- 用 JMX 检测应用程序
- Spring常见问题
- The Common Language Runtime (CLR)
- Win11 不支持移动任务栏位置;苹果将推出更大尺寸的 iPad Pro;iOS 15 更新 Beta2 版本|极客头条...
- ASP.NET 路由
- git之配置在Terminal显示git分支
- Sql: 去除字符串中的相同的字符串函數
- 2-10 TreeView 控件
- 每日站立会议10(完结)
- 基于51单片机病床呼叫系统proteus仿真设计(protues仿真+源码+报告)
- linux蚂蚁矿池教程,蚂蚁矿机Z9使用教程
- java零基础到精通全套视频教程
- 小米 线刷 android,小米10 Android 11 Beta 1线刷包已放出,安卓11/MIUI 12二选一
- excel 方框打钩
- 为什么大多公司不要培训班培训出来的Java程序员?
- python opencv 显示图片 灰度图片 合并图片 保存图片 纵向合并
- web前端入门学习路线{HTML+CSS+JavaScript}最全面的前端教程
- 解锁“绿色计算产业白皮书”,海量数据携手绿盟成员共促生态繁荣
- 【国信长天蓝桥杯】扩展板⑦ 光敏电阻的使用