|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #include <errno.h>
. v+ R* M; i! z, w# ~, A- #define KEYVALLEN 100
- ( E% N* w @ \( A' z) t
- /* 删除左边的空格 */
- 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);
- }
- ) r: q9 ^! Q5 |0 f6 _
- /* 删除右边的空格 */
- 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;
- }
- 6 ~4 T" ~, H: ]* \9 I, L# n9 E& i
- /* 删除两边的空格 */
- 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;
- }
- 9 J1 g) ?! @0 b% h0 h3 ?. x
- ! S1 V+ z4 S6 H, K2 R* N: u% r+ r
- 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 );
- 2 \) t: Y7 N9 _) t9 o
- 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;
0 M4 ~) ]& z; ^$ c9 G# O7 r9 O& a- if( found == 0 ){
- if( buf[0] != '[' ) {
- continue;
- } else if ( strncmp(buf,appname,strlen(appname))==0 ){
- found = 1;
- continue;
- }
- ) _- a% i2 D$ h/ b+ f3 ]
- } 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) );
- 7 x. m6 n; I9 m4 }6 \- Z
- 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);
- }
- b7 u$ S* d% I: f) n# Z( K
- void main()
- {
- char ip[16];
- GetProfileString("./cls.conf", "cls_server", "ip", ip);
- printf("%s\n",ip);
- }8 k V6 R. O7 k H+ e* e' Q' w. v) B0 }
9 [* r) h% T6 c( e2 I5 c
* B+ o/ o! M2 l2 w+ }配置文件例子如下:3 G" G& c2 Y9 c0 [8 C7 |6 a
) _1 T* x7 h1 `( O) E6 C1 X4 `
- [cls_server]
- #配置文件等号左右可以有空格也可以没有
- ip=192.16.31.2
; ?* c1 e/ N* z8 {
' ^ `3 W8 a: r |
|