免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1318 | 回复: 0

收藏---一段比较通用读取配置文件的代码 [复制链接]

论坛徽章:
0
发表于 2009-08-21 17:49 |显示全部楼层
比较具有收藏价值,用到的时候拿出来直接用了。
配置文件的格式如下:

[COMMON]
#common file
port = 100
login = /usr/bin/login

函数:

int GetProfileString(char * profile, char * AppName, char * KeyName, char * KeyVal )
{
        char appname[20],keyname[20];
        char buf[KEYVALLEN],*c;
        FILE *fp;
        int found=0; /* 1 AppName 2 KeyName */
        if( (fp=fopen( profile,"r" ))==NULL ){
                printf( "openfile [%s] error [%s]\n",
                        profile,strerror(errno) );
                return(-1);
        }
        fseek( fp, 0, SEEK_SET );
        sprintf( appname,"[%s]", AppName );
        memset( keyname, 0, sizeof(keyname) );
        while( !feof(fp) && fgets( buf, KEYVALLEN, fp )!=NULL ){
                if( l_trim( buf )==0 )
                        continue;
                if( found==0 ){
                        if( buf[0]!='[' ) {
                                continue;
                        } else if ( strncmp(buf,appname,strlen(appname))==0 ){
                                found=1;
                                continue;
                        }
                } else if( found==1 ){
                        if( buf[0]=='#' ){
                                continue;
                        } else if ( buf[0]=='[' ) {
                                break;
                        } else {
                                if( (c=(char*)strchr(buf,'='))==NULL )
                                        continue;
                                memset( keyname, 0, sizeof(keyname) );
                                sscanf( buf, "%[^=]", keyname );
                                if( strcmp(keyname, KeyName)==0 ){
                                        sscanf( ++c, "%[^\n]", KeyVal );
                                        found=2;
                                        break;
                                } else {
                                        continue;
                                }
                        }
                }
        }
        fclose( fp );
        if( found==2 )
                return(0);
        else
                return(-1);
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1574/showart_2033919.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP