文件编程练手 [2] —— 编码实现修改配置文件的数值

文章转载请注明出处,加上原文链接,谢谢!https://blog.csdn.net/weixin_46959681/article/details/112784678



配置文件修改的典型场景

软件在实际运行过程中,出于实际的工作需求必然会读取、修改相对应的配置文件的数据。经典游戏如贪吃蛇的移动速度、长度、食物等等,这些都是必须要在游戏运行过程中不停地更新数据。


配置文件数据修改

将如下的配置文件 config.text 中的长度 LENG=9 修改成 LENG=5

/* 文件 config.text */
	
	SPEED=5
	LENG=9
	SCORE=60
	LEVEL=20	

演示代码: demo1.c

/* 文件demo1.c */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
    
    
        int fdSrc;
        char *readBuf = NULL;

        if(argc != 2){
    
    
                printf("pararm error.\n");
                exit(-1);
        }

        fdSrc = open(argv[1], O_RDWR);
        //利用光标进行文件大小计算。
        int size = lseek(fdSrc, 0, SEEK_END);
        lseek(fdSrc, 0, SEEK_SET);

        readBuf = (char *)malloc(sizeof(char)*size + 20);
        read(fdSrc, readBuf, size);

		//利用修改配置文件的数据。(函数strstr自行搜索。)
        char *p = strstr(readBuf, "LENG=");
        
        if(p == NULL){
    
    
                printf("Not found the string your search.\n");
        }

        p = p + strlen("LENG=");
        //单引号表示的是字符。
        *p = '5';
		
        lseek(fdSrc, 0, SEEK_SET);
        write(fdSrc, readBuf, strlen(readBuf));

        free(readBuf);
        close(fdSrc);
        return 0;
}

编译器运行:
在这里插入图片描述

运行结果:

在图片中可以看到,原来的 LENG=9 已经被修改为 LENG=5 。

在这里插入图片描述


文章更新记录

  • 文本初次完成。(这篇拖延症犯了!)「2021.1.18 16:08」
  • 添加了两张演示图片。 「2021.1.18 16:37」
  • 文章部分内容进行了顺序调整。 「2021.1.19 9:11」

猜你喜欢

转载自blog.csdn.net/weixin_46959681/article/details/112784678