📄 _string_.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 + -