C语言读取及修改简单配置文件内容
来源:互联网 发布:有什么好玩的游戏知乎 编辑:程序博客网 时间:2024/05/18 03:36
运行环境:ubuntu14.04
此方式适合小的配置文件,不适合大型文件。
假如有文件内容为:
IP=192.168.1.20
MASK=255.255.255.0
DNS=192.168.1.1
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <stdint.h>#define STR_NETWORKCFG_FILE "./net.conf"struct info_t{ char name[20]; char data[60];};/*获取指定字段(name)信息存入result中*/int GetFile_Info(char *name,char *result){ char linebuffer[100] = {0}; char buffer1[100] = {0}; char buffer2[100] = {0}; uint8_t flag = 0; int buffer_size=0; FILE *fp = fopen(STR_NETWORKCFG_FILE, "r"); if(fp == NULL) { printf("open error"); return 1; } while(1) { char *ret = fgets(linebuffer, 100, fp); if(ret == NULL) { break; } sscanf(linebuffer, "%[^=]=%[^=]", buffer1,buffer2); if(!strcmp(name, buffer1)) { buffer_size=strlen(buffer2); memcpy(result,buffer2,buffer_size); result[buffer_size-1]='\0';//remove the \n flag = 1; break; } memset(buffer1,0,sizeof(buffer1)); memset(buffer2,0,sizeof(buffer2)); memset(linebuffer,0,sizeof(linebuffer)); } fclose(fp); if(flag != 1) return 1; return 0;}/*获取所有文件信息,存入结构体中,遇到需修改的字段,修改后存入结构体,后再全部重新写入保存*/int ChangeFile_Info(char *name,char *writedata){ int i; uint8_t flag = 0,cnt = 0; struct info_t info[12]; char linebuffer[256] = {0}; char buffer[80]; FILE *fp = fopen(STR_NETWORKCFG_FILE, "r"); if(fp == NULL) { printf("open error"); return 1; } for(i = 0 ; i < 12 ; i++) { char *ret = fgets(linebuffer, 256, fp); if(ret == NULL) { break; } sscanf(linebuffer, "%[^=]=%[^=]", info[i].name,info[i].data); if(!strcmp(info[i].name, name)) { memcpy(info[i].data,writedata,strlen(writedata)); info[i].data[strlen(writedata)] = '\n'; info[i].data[strlen(writedata)+1] = '\0'; flag = 1; } memset(linebuffer,0,sizeof(linebuffer)); cnt++; } fclose(fp); if(flag) { fp = fopen(STR_NETWORKCFG_FILE,"w"); if(fp == NULL) { return 1; } for(i = 0 ; i < cnt ; i++) { memset(buffer,0,sizeof(buffer)); sprintf(buffer,"%s=%s",info[i].name,info[i].data); fprintf(fp,"%s",buffer); } fclose(fp); } else return 1; return 0;}int main(){ char result[100] = {0}; char *writedata = "192.168.10.33"; GetFile_Info("IP",result); printf("result:%s\n",result); ChangeFile_Info("IP",writedata); GetFile_Info("IP",result); printf("result:%s\n",result); return 0;}
代码运行结果:
result:192.168.1.20
result:192.168.10.33
打开文件查看,IP=192.168.10.33
阅读全文
0 0
- C语言读取及修改简单配置文件内容
- 【C/C++】C语言读取简单配置文件
- c/c++: 读取配置文件(文本)内容的简单实现
- C语言读取配置文件
- C语言读取配置文件
- C语言读取配置文件
- C语言读取配置文件
- C语言获取文件字节大小及读取内容到内存简单例子
- java修改读取properties配置文件中的内容
- C语言读取配置文件例子
- C语言读取配置文件代码
- 用C语言读取配置文件
- C语言读取文件内容
- 读取INI配置文件内容(源文件C)
- Linux c 配置文件读取与修改
- 读取配置文件 + 修改配置文件
- 引自MagicLinux的C代码简单配置文件读取功能(使用需修改)
- C语言读取类unix风格配置文件
- 《学习opencv》第四章1,2题(第二题详解,最切题)
- 数据结构:绪论
- 百度地图 之 定位
- pdf.js可以实现在html下直接浏览pdf文档
- Web容器之Listener初始化顺序
- C语言读取及修改简单配置文件内容
- 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同
- photoSwiper图片自适应
- 利用单例模式,解决toast重复弹出的问题
- PHP PHPExcel导入excel表格订单
- 【nRF51822学习教程】SDK框架分析
- gulp sass安装步骤
- SectionOne iOS_Animations_by_Tutorials
- Web容器之Listener初始化顺序