⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _string_.c

📁 GPRS模组资料包含DEMO
💻 C
字号:
//======================================================
// 文件名称:	_String_.c
// 功能描述:	字符串处理
// 维护记录:	2007-01-18	v1.0
//======================================================
#include "_String_.h"

#if EXT_BUFFER
char buffer_for_string[512];
#endif
//=============================================================
// 语法格式:	char *_strupr_(char *Str)
// 实现功能:	将字符串转换为全大写
// 参数:		Str	-	输入字符串首地址
// 返回值:		输出字符串首地址
// 注意:		该程序将直接修改原始字符串
//=============================================================
char *_strupr_(char *Str)
{
	char *cp;
	cp = Str;
	while (*cp != 0)
	{
		if (*cp >= 'a' && *cp <= 'z' )
		{
			*cp -=  'a' - 'A';
		}
		cp++;
	}
	return Str;
}

//=============================================================
// 语法格式:	int _strlen_(char *s)
// 实现功能:	求取字符串长度
// 参数:		s	-	输入字符串首地址
// 返回值:		字符串长度
//=============================================================
int _strlen_(char *s)
{
	int i = 0;
	while(*s)
	{
		i++;
		s++;
	}
	return i;
}

//=============================================================
// 语法格式:	int _strncmp_(char *s1, char *s2, int len)
// 实现功能:	字符串比较
// 参数:		s1	-	待比较字符串1首地址
//				s2	-	待比较字符串2首地址
//				len	-	最大比较长度
// 返回值:		字符串完全相等返回0
// 说明:		该函数仅比较两个字符串的前不超过len长度是否相等
//=============================================================
int _strncmp_(char *s1, char *s2, int len)
{
	while(len--)
	{
		if(*s1 && *s2)
		{
			if(*s1 - *s2)
				return (*s1 - *s2);
			s1++;
			s2++;
		}
		else
		{
			if(*s1 || *s2)
				return(*s1? *s1: *s2);
		}
	}
	return 0;
}

//=============================================================
// 语法格式:	int _strcmp_(char *s1, char *s2)
// 实现功能:	字符串比较
// 参数:		s1	-	待比较字符串1首地址
//				s2	-	待比较字符串2首地址
// 返回值:		字符串完全相等返回0
// 说明:		该函数比较两字串,直至其中之一或二者均到达末尾
//=============================================================
int _strcmp_(char *s1, char *s2)
{
	while(*s1 && *s2)
	{
		if(*s1 - *s2)
			return (*s1 - *s2);
		s1++;
		s2++;
	}
	if(*s1 != 0)
		return *s1;
	if(*s2 != 0)
		return *s2;
	return 0;
}

//=============================================================
// 语法格式:	int _strsplit_(char *sour, char *splstr, char *dest[])
// 实现功能:	字符串分割
// 参数:		sour	-	原始字符串首地址
//				splstr	-	分割字符串
//				dest[]	-	分割之后的每个字符串的首地址
// 返回值:		分割之后的字符串数量
//=============================================================
int _strsplit_(char *sour, char *splstr, char *dest[])
{
	int i = 0;
	int len;
	char *cp;
	if(*splstr == 0)
		return 0;
#if EXT_BUFFER
	cp = buffer_for_string;
#else
	cp = sour;
#endif
	dest[i] = cp;
	len = _strlen_(splstr);
	while(*sour)
	{
		if(*sour == *splstr)
		{
			if(_strncmp_(sour, splstr, _strlen_(splstr)) == 0)
			{
				i++;
				sour += len - 1;
				*cp++ = 0;
				dest[i] = cp;
			}
		}
		else
#if EXT_BUFFER
			*cp++ = *sour;
#else
			cp++;
#endif
		sour++;
	}
	return (i + 1);
}

//=============================================================
// 语法格式:	unsigned int _hex2dec_(unsigned int Binary)
// 实现功能:	二进制转BCD码(仅转换输入数据的低16bit)
// 参数:		Binary	-	输入数据
// 返回值:		BCD码
//=============================================================
unsigned int _hex2dec_(unsigned int Binary)
{
	unsigned int ulRet = 0;
	Binary &= 0xffff;
	while(Binary >= 10000)
	{
		ulRet += 10000;
		Binary -= 10000;
	}
	while(Binary >= 1000)
	{
		ulRet += 0x1000;
		Binary -= 1000;
	}
	while(Binary >= 100)
	{
		ulRet += 0x0100;
		Binary -= 100;
	}
	while(Binary >= 10)
	{
		ulRet += 0x0010;
		Binary -= 10;
	}
	ulRet += Binary;
	return (ulRet);
}

//=============================================================
// 语法格式:	int _str2hex_(char *s)
// 实现功能:	将一个字符串转换为十六进制数据
// 参数:		s	-	输入字符串
// 返回值:		字符串代表的十六进制数据
//=============================================================
int _str2hex_(char *s)
{
	int Ret = 0;
	s = _strupr_(s);
	if((s[0] != '0') || (s[1] != 'X'))
		return 0;
	s += 2;
	while(*s)
	{
		Ret <<= 4;
		if((*s >= '0') && (*s <= '9'))
			Ret += ((int)*s - '0');
		else if((*s >= 'A') && (*s <= 'Z'))
			Ret += ((int)*s - 'A' + 0x0a);
		else
			return 0;
		s++;
	}
	return Ret;
}

//=============================================================
// 语法格式:	int _str2dec_(char *s)
// 实现功能:	将一个字符串转换为十进制数据
// 参数:		s	-	输入字符串
// 返回值:		字符串代表的十进制数据
//=============================================================
int _str2dec_(char *s)
{
	int Ret, Flag = 0;
	Ret = 0;
	if(*s == '-')
	{
		Flag = 1;
		s++;
	}
	while(*s)
	{
		if((*s < '0') || (*s > '9'))
			return 0;
		Ret = Ret * 10 + (int)(*s - '0');
		s++;
	}
	if(Flag)
		Ret *= -1;
	return Ret;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -