- 论坛徽章:
- 1
|
有关在UNIX下用C写一个读配置文件的问题
- /***********************************************
- ### 函数名 : ReadConfig
- ### 功能 : 读配置文件(config.ini)
- ### 入参 : char *scetion 主配置项目名称,
- ### char *item 子配置项目名称,
- ### char *Default 当读取配置失败时取此默认值
- ### 出参 : char * value 所读得的配置值
- ### 调用举例: ReadConfig( "config.ini", "Main", "IP", tmpStr, "127.0.0.1" );
- ### 作者 : Flw
- ### 修改日期: 2001-12-18
- ************************************************/
- int ReadConfig( filename, scetion, item, value, Default )
- char *filename;
- char *scetion;
- char *item;
- char *value;
- char *Default;
- {
- FILE *fp;
- char readStr[200], tmpstr[ 31 ];
- int findScetion = 0;
-
- if( ( fp = fopen(filename, "r") ) == NULL )
- {
- return -1;
- }
- while(!feof(fp))
- {
- memset( readStr, 0x00, sizeof( readStr ) );
- fgets( readStr, 80, fp );
- readStr[strlen(readStr)-1] = 0; // 去掉换行符 '0x0A'
- memset(tmpstr, 0, sizeof(tmpstr));
- if (readStr[0] == '[')
- {
- findScetion = 0;
- memcpy(tmpstr, readStr + 1, strlen(scetion) );
- if (memcmp(scetion, tmpstr, strlen(tmpstr) ) == 0)
- {
- findScetion = 1;
- }
- }
- else
- {
- if (findScetion == 0) continue;
- if (memcmp(readStr, item, strlen(item)) == 0)
- {
- strcpy(value, readStr + strlen(item) + 1);
- break;
- }
- }
- }
- fclose(fp);
- if (findScetion == 0)
- {
- if ( Default != NULL )
- {
- strcpy(value, Default);
- return 1;
- }
- return -1;
- }
- return 1;
- }
复制代码 |
|