C语言中修改文件内容

C语言中修改文件内容

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

#include

#include

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); //将临时文件名改为原来的文件名,路径也是一样的

}

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

相关推荐

逆水寒1根骨等于多少气血上限(逆水寒近战手镯什么属性值钱)
世界杯亚洲区预选赛12强赛参赛名单出炉
365bet有没有app

世界杯亚洲区预选赛12强赛参赛名单出炉

📅 07-04 👁️ 2187
口袋妖怪日月友好商店物品解锁方法 商店物品怎么买