⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 在类unix中可以方便使用的读写配置文件的接口。
💻 C
字号:
#include <comlib.h>int GetConfigStrValue(char *buf, void *pValue, int nType){	char *nCeAddr[2];	int nCeLen[2];	STRRESVAR stuStr;	stuStr.nAmount = 2;				/* 数据域总数 */	stuStr.nFlag = 1;				/* 固定分隔 */	stuStr.filedlen = nCeLen;		/* 每个域的长度 */	stuStr.nCompartlen = 1;			/* 分隔符号的长度 */	strcpy(stuStr.szCompart, "=");	/* 分隔字符串 */	stuStr.filedaddr = nCeAddr;		/* 指向每个域首的指针 */	strrespre(buf, &stuStr);		/* 解析字符串报文 */	ASSERT(strresvalue(buf, stuStr, 1, pValue, nType) == 0);	return 0;	}int GetConfigValue(char *szPath, char *szRoot, char *szName, void *pValue, int nType){	FILE *fp;	int nFlag = 0;							/* 进入数据域的标志 */	char buf[1024], szRootExt[100], szNameExt[100];	ASSERT( (fp = fopen(szPath, "r")) != NULL);	sprintf(szRootExt, "[%s]", szRoot);	/* 数据域“[szRoot]”格式 */	sprintf(szNameExt, "%s=", szName);		/* 数据项“szName=“格式 */	while (feof(fp) == 0)						{		memset(buf, 0, sizeof(buf));		fgets(buf, sizeof(buf), fp);		/* 读取文件中的每一行字符串 */		if (buf[0] == '#') continue;		/* 注解行,跳过 */											/* 未进入数据域时,只查询数据域行 */		if (nFlag == 0 && buf[0] != '[') continue;											/* 未进入数据域,当前处于数据域行 */		else if (nFlag == 0 && buf[0] == '[') 		{									/* 匹配当前数据域是否为所求域 */			if (strncmp(buf, szRootExt, strlen(szRootExt)) == 0) nFlag = 1;		}		else if (nFlag == 1 && buf[0] == '[')		{												break;							/* 数据域遍历完毕 */		}		else 								/* 遍历数据域中的配置项 */		{									/* 匹配当前配置项是否为所求项 */			if (strncmp(buf, szNameExt, strlen(szNameExt)) == 0)			{								/* 从配置项中分解配置取值 */				ASSERT(GetConfigStrValue(buf, pValue, nType) == 0);				fclose(fp);				return 0;			}		}	}	fclose(fp);	return -1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -