#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
#include <ctype.h>
#define KEYVALLEN 100
/* 删除左边的空格 */
char * l_trim(char * szOutput, const char *szInput)
{
assert(szInput != NULL);
assert(szOutput != NULL);
assert(szOutput != szInput);
while(*szInput != '\0' && isspace(*szInput))
{
++szInput;
}
return strcpy(szOutput, szInput);
}
/* 删除右边的空格 */
char *r_trim(char *szOutput, const char *szInput)
{
char *p = NULL;
assert(szInput != NULL);
assert(szOutput != NULL);
assert(szOutput != szInput);
strcpy(szOutput, szInput);
p = szOutput + strlen(szOutput) - 1;
while(p >= szOutput && isspace(*p))
{
--p;
}
*(++p) = '\0';
return szOutput;
}
/* 删除两边的空格 */
char * a_trim(char * szOutput, const char * szInput)
{
char *p = NULL;
assert(szInput != NULL);
assert(szOutput != NULL);
l_trim(szOutput, szInput);
p = szOutput + strlen(szOutput) - 1;
while(p >= szOutput && isspace(*p))
{
--p;
}
*(++p) = '\0';
return szOutput;
}
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 );
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;
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, "%[^=|^ |^\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(1);
else if(found==1)
{
return 0;
}
else
return(-1);
}
多服务多协议服务器设计
5星 · 超过95%的资源 需积分: 9 52 浏览量
2014-03-02
11:52:29
上传
评论
收藏 13KB RAR 举报
zhouhaiyangqq
- 粉丝: 26
- 资源: 25
最新资源
- 基于MATLAB实现传统图像去噪算法和深度学习DnCNN模型图像去噪源码+项目说明.zip
- 数据处理数据图像处理大作业-图割源码.zip
- 图书管理系统c语言实现的项目源代码.zip
- 毕设项目基于深度学习的热轧带钢表面缺陷自动检测设计与实现python源码+PPT演讲+模型.zip
- 01 背包问题限定条件最优解动态规划算法.zip
- 0- 1背包动态规划解决问题思路及原理.zip
- STM32视力保护程序.zip
- 基于SSM框架的医院销售管理系统开题报告.zip
- 基于SSM框架的校园心理咨询服务平台的设计与实现.zip
- 三菱PLC FX1S系列PLC中文编程GX Works2 入门指南 plc编程实例FX3U FX3UC编程手册资料合集(30个)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈