/*********************************************************************
* 版权所有 (C)2009, 天津市北海通信技术有限公司。
*
* 文件名称: INIFileOP.C
* 文件标识:
* 其它说明: INI文件的操作
* 当前版本: V1.0
* 作 者: 黄伟
* 完成日期:
*
* 修改记录1:
* 修改日期:2009年6月23日
* 版 本 号:V1.0
* 修 改 人:黄伟
* 修改内容:创建
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/*#undef VOS_WINNT*/
#define VOS_WINNT
#ifdef VOS_WINNT
//#define INIFileTstmain main
#endif
#define SuccessRet 1;
#define FailedRet 0;
#define MAX_CFG_BUF 512
#define CFG_OK 0
#define CFG_SECTION_NOT_FOUND -1
#define CFG_KEY_NOT_FOUND -2
#define CFG_ERR -10
#define CFG_ERR_FILE -10
#define CFG_ERR_OPEN_FILE -10
#define CFG_ERR_CREATE_FILE -11
#define CFG_ERR_READ_FILE -12
#define CFG_ERR_WRITE_FILE -13
#define CFG_ERR_FILE_MAT -14
#define CFG_ERR_SYSTEM -20
#define CFG_ERR_SYSTEM_CALL -20
#define CFG_ERR_INTERNAL -21
#define CFG_ERR_EXCEED_BUF_SIZE -22
#define COPYF_OK 0
#define COPYF_ERR_OPEN_FILE -10
#define COPYF_ERR_CREATE_FILE -11
#define COPYF_ERR_READ_FILE -12
#define COPYF_ERR_WRITE_FILE -13
#define TXTF_OK 0
#define TXTF_ERR_OPEN_FILE -1
#define TXTF_ERR_READ_FILE -2
#define TXTF_ERR_WRITE_FILE -3
#define TXTF_ERR_DELETE_FILE -4
#define TXTF_ERR_NOT_FOUND -5
char CFG_ssl = '[', CFG_ssr = ']'; /* 项标志符Section Symbol --可根据特殊需要进行定义更改,如 { }等*/
char CFG_nis = ':'; /*name 与 index 之间的分隔符 */
char CFG_nts = '#'; /*注释符*/
int CFG_section_line_no, CFG_key_line_no, CFG_key_lines;
/**********************************************************************
* 函数名称: strtrimr
* 功能描述: 去除字符串右边的空字符
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
*
***********************************************************************/
/*void main()
{
//去掉后面的空格
char bufr[80] = "ok";
char *strr =NULL;
strr = rtrim(&bufr);
printf(strr);
return ;
}*/
/**********************************************************************
* 函数名称: ltrim
* 功能描述: 去掉前面的空格
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
*
* //去掉前面的空格
* char buf[80] = " ok";
* char *str =NULL;
* str = ltrim(&buf);
* printf(str);
***********************************************************************/
char * ltrim(char *s)
{// 去掉前部的空格
int l=0,p=0,k=0;
l = strlen(s);
if( l == 0 ) return;
p = 0;
while( s[p] == ' ' || s[p] == '\t' ) p++;
if( p == 0 ) return;
while( s[k] != '\0') s[k++] = s[p++];
return s;
}
/**********************************************************************
* 函数名称: rtrim
* 功能描述: 去掉字符串尾部的空格
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
* 去掉后面的空格
* char bufr[80] = "ok ";
* char *strr =NULL;
* strr = rtrim(&bufr);
* printf(strr);
***********************************************************************/
char * rtrim(char *s)
{// 去掉尾部的空格
int l=0,p=0;
l = strlen(s);
if( l == 0 ) return;
p = l -1;
while( s[p] == ' ' || s[p] == '\t' ) {
s[p--] = '\0';
if( p < 0 ) break;
}
return s;
}
/**********************************************************************
* 函数名称: strtriml
* 功能描述: 得到字符串前面N个字符
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* 例子:
*#include <stdio.h>
*#include <string.h>
*int main(void)
*{
* char string[10];
* char *str1 = "abcdefghi";
* strncpy(string, str1, 6);
* string[6] = '\0';
* printf("%s\n", string);
* return 0;
*}
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
*
***********************************************************************/
/**********************************************************************
* 函数名称: right
* 功能描述: 得到字符串后面N个字符
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
* 例子:
* char buf[11] = "123456789";
* char buf2[11];
* char *str=NULL;
* str=right(buf,buf2,4);
* printf(str);
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
*
***********************************************************************/
char * right(char *dst,char *src, int n)
{
char *p = src;
char *q = dst;
int len = strlen(src);
if(n>len) n = len;
p += (len-n);
while(*q++ = *p++);
return dst;
}
/**********************************************************************
* 函数名称: substring
* 功能描述: 从一个字符串中截取另一个字符串
* 访问的表: 无
* 修改的表: 无
* 输入参数: char * buf 字符串指针
* 输出参数: 无
* 返 回 值: 字符串指针
* 其它说明:
* 修改日期 版本号 修改人 修改内容
* 例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char *substring(char *dst,char *src,int len,int start);
void main()
{
char buf[11] = "123456789\n";
char buf2[11];
char *str=NULL;
//str=right(buf,buf2,4);
str = substring(buf2,buf,4,2);
printf(str);
//return ;
}
* -----------------------------------------------
* 2009/6/23 V1.0 黄伟 创建
*
***********************************************************************/
//从一个字符串中截取另一个字符串 src 全部的字符串 dst要截取的字符串 start 起始位
//len 要截取的长度
char *substring(char *dst,char *src,int len,int start)
{
char *p=dst;
char *q=src;
int length=strlen(src);
if(start>=length||start<0) return NULL;
if(len>length) len=length-start;
q+=start;
while(len--)
{
*(p++)=*(q++);
}
*(p++)='\0';
return dst;
}
/**********************************************************************
* 函数名称: reverse_str
* 功能描述: 反转字符串 使用中间变量
* 访问的表: 无
* 修改的表: 无
* 输入参数: char *ch 要反转的字符串
* 输出参数: char *ch 反转之后的字符串
* 返 回 值: 实际读的长度
* 其它说明: 无
* 修改日期 版本号 修改人 修改内容
*例子
#include <stdio.h>
#include <string.h>
void reverse_str(char * ch);
void reverse_str2(char *ch);
int main(void)
{
char c[] = "123456789";
printf("original