|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #include <errno.h>
, I7 v1 O$ q$ H+ R$ y% w$ v( ~- #define KEYVALLEN 100
- / H) A. i+ A! }
- /* 删除左边的空格 */
- char * l_trim(char * szOutput, const char *szInput)
- {
- assert(szInput != NULL);
- assert(szOutput != NULL);
- assert(szOutput != szInput);
- for (NULL; *szInput != '\0' && isspace(*szInput); ++szInput){
- ;
- }
- return strcpy(szOutput, szInput);
- }
3 m% N! n; H2 @: F5 c1 X' H: z- /* 删除右边的空格 */
- char *r_trim(char *szOutput, const char *szInput)
- {
- char *p = NULL;
- assert(szInput != NULL);
- assert(szOutput != NULL);
- assert(szOutput != szInput);
- strcpy(szOutput, szInput);
- for(p = szOutput + strlen(szOutput) - 1; p >= szOutput && isspace(*p); --p){
- ;
- }
- *(++p) = '\0';
- return szOutput;
- }
5 N" n# ^# E! M' O4 A1 v' ~+ x- ]- /* 删除两边的空格 */
- char * a_trim(char * szOutput, const char * szInput)
- {
- char *p = NULL;
- assert(szInput != NULL);
- assert(szOutput != NULL);
- l_trim(szOutput, szInput);
- for (p = szOutput + strlen(szOutput) - 1;p >= szOutput && isspace(*p); --p){
- ;
- }
- *(++p) = '\0';
- return szOutput;
- }
- * y, m/ T6 w* w# d Z- b6 @# B G+ P
+ w+ d# g% J/ Q+ j0 V- int GetProfileString(char *profile, char *AppName, char *KeyName, char *KeyVal )
- {
- char appname[32],keyname[32];
- char *buf,*c;
- char buf_i[KEYVALLEN], buf_o[KEYVALLEN];
- 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 );
- memset( appname, 0, sizeof(appname) );
- sprintf( appname,"[%s]", AppName );
. C3 r0 X; L& F6 W+ s( P- while( !feof(fp) && fgets( buf_i, KEYVALLEN, fp )!=NULL ){
- l_trim(buf_o, buf_i);
- if( strlen(buf_o) <= 0 )
- continue;
- buf = NULL;
- buf = buf_o;
- * x/ O& q* k' `2 P6 }
- if( found == 0 ){
- if( buf[0] != '[' ) {
- continue;
- } else if ( strncmp(buf,appname,strlen(appname))==0 ){
- found = 1;
- continue;
- }
: d9 \. f) x/ i1 b5 a: f- } 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) );
: a3 Q8 J' l/ F8 j6 M( h: m( l$ P3 ^6 b- sscanf( buf, "%[^=|^ |^\t]", keyname );
- if( strcmp(keyname, KeyName) == 0 ){
- sscanf( ++c, "%[^\n]", KeyVal );
- char *KeyVal_o = (char *)malloc(strlen(KeyVal) + 1);
- if(KeyVal_o != NULL){
- memset(KeyVal_o, 0, sizeof(KeyVal_o));
- a_trim(KeyVal_o, KeyVal);
- if(KeyVal_o && strlen(KeyVal_o) > 0)
- strcpy(KeyVal, KeyVal_o);
- free(KeyVal_o);
- KeyVal_o = NULL;
- }
- found = 2;
- break;
- } else {
- continue;
- }
- }
- }
- }
- fclose( fp );
- if( found == 2 )
- return(0);
- else
- return(-1);
- }
) l% s7 ?/ A0 L% f) n/ E+ s- void main()
- {
- char ip[16];
- GetProfileString("./cls.conf", "cls_server", "ip", ip);
- printf("%s\n",ip);
- }
/ J; Z0 w) `+ r
6 b8 u/ F( B4 z5 B7 J" y+ ]. e7 E" L3 b2 M$ Z- g
配置文件例子如下:% E' v. s6 M: e, Z* B) U, s
4 ]( Q7 M+ C! @' I0 b+ U- [cls_server]
- #配置文件等号左右可以有空格也可以没有
- ip=192.16.31.2
) a: P# S9 R; _# H3 i3 n& |* U 8 [6 `* h) O1 j; y% T5 t# N
|
|