window下C语言实现读取config.ini配置文件
来源:互联网 发布:淘宝上的nba旗舰店 编辑:程序博客网 时间:2024/06/11 14:05
#include <stdio.h>#include <string.h>#pragma warning(disable:4996)/** 函数名:GetIniKeyString* 入口参数:title*配置文件中一组数据的标识*key*这组数据中要读出的值的标识*filename*要读取的文件路径* 返回值:找到需要查的值则返回正确结果*否则返回NULL*/char *GetIniKeyString(char *title, char *key, char *filename){FILE *fp=NULL;int flag = 0;char sTitle[32], *wTmp;static char sLine[1024];sprintf(sTitle, "[%s]", title);if (NULL == (fp = fopen(filename, "r"))) {fclose(fp);perror("fopen");return NULL;}else {while (NULL != fgets(sLine, 1024, fp)) {// 这是注释行if (0 == strncmp("//", sLine, 2)) continue;if ('#' == sLine[0]) continue;wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, wTmp - sLine)) { // 长度依文件读取的为准sLine[strlen(sLine) - 1] = '\0';fclose(fp);return wTmp + 1;}}else {if (0 == strncmp(sTitle, sLine, strlen(sLine) - 1)) { // 长度依文件读取的为准flag = 1; // 找到标题位置}}}}fclose(fp);return NULL;}/** 函数名:GetIniKeyInt* 入口参数:title*配置文件中一组数据的标识*key*这组数据中要读出的值的标识*filename*要读取的文件路径* 返回值:找到需要查的值则返回正确结果*否则返回NULL*/int GetIniKeyInt(char *title, char *key, char *filename){return atoi(GetIniKeyString(title, key, filename));}/** 函数名:PutIniKeyString* 入口参数:title*配置文件中一组数据的标识*key*这组数据中要读出的值的标识*val*更改后的值*filename*要读取的文件路径* 返回值:成功返回 0*否则返回 -1*/int PutIniKeyString(char *title, char *key, char *val, char *filename){FILE *fpr, *fpw;int flag = 0;char sLine[1024], sTitle[32], *wTmp;sprintf(sTitle, "[%s]", title);if (NULL == (fpr = fopen(filename, "r"))) {fclose(fpr);perror("fopen");return NULL;}sprintf(sLine, "%s.tmp", filename);if (NULL == (fpw = fopen(sLine, "w"))){fclose(fpw);perror("fopen");return NULL;}while (NULL != fgets(sLine, 1024, fpr)) {if (2 != flag) { // 如果找到要修改的那一行,则不会执行内部的操作wTmp = strchr(sLine, '=');if ((NULL != wTmp) && (1 == flag)) {if (0 == strncmp(key, sLine, wTmp - sLine)) { // 长度依文件读取的为准flag = 2;// 更改值,方便写入文件sprintf(wTmp + 1, "%s\n", val);}}else {if (0 == strncmp(sTitle, sLine, strlen(sLine) - 1)) { // 长度依文件读取的为准flag = 1; // 找到标题位置}}}fputs(sLine, fpw); // 写入临时文件}fclose(fpr);fclose(fpw);sprintf(sLine, "%s.tmp", filename);return rename(sLine, filename);// 将临时文件更新到原文件}/** 函数名:PutIniKeyString* 入口参数:title*配置文件中一组数据的标识*key*这组数据中要读出的值的标识*val*更改后的值*filename*要读取的文件路径* 返回值:成功返回 0*否则返回 -1*/int PutIniKeyInt(char *title, char *key, int val, char *filename){char sVal[32];sprintf(sVal, "%d", val);return PutIniKeyString(title, key, sVal, filename);}int main(int argc, char *argv[]){printf("%s\n", GetIniKeyString("DOG", "name", "config.ini"));printf("%d\n", GetIniKeyInt("DOG", "age", "config.ini")); PutIniKeyInt("DOG", "age", 56, "config.ini");system("pause");return 0;}
阅读全文
0 0
- window下C语言实现读取config.ini配置文件
- Linux C语言实现读取ini配置文件
- Linux下用C读取INI配置文件
- Linux下用C读取INI配置文件
- windows下C语言实现<读取>和<写入> *.ini文件。
- c语言实现读取ini文件操作
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- windows下读取配置文件(.ini)
- Linux下用C语言读取配置文件
- C 语言实现读配置文件(.ini)函数,替代GetPrivateProfileString,WritePrivateProfileString
- 用c语言实现读取配置文件源码
- C语言实现<读取>和<写入> *.ini文件。
- C语言读取配置文件
- C语言读取配置文件
- 2. Android
- java------多线程通信
- HTML--列表标签应用
- Java多线程学习总结(一)——多线程创建
- [Unity] Unity渲染优化
- window下C语言实现读取config.ini配置文件
- struts2:This method: login for action user is not allowed!
- 关于事件分发机制的思考
- 关于Boost
- Android性能优化之利用LeakCanary检测内存泄漏及解决办法
- 逻辑题1
- Python3学习笔记:迭代器与生成器
- oracle提示TNS:无监听程序的解决办法
- dos批处理 for用法