int strcmp(const char *src, const char *dst)
{
assert(src != null && dst != null)
if(src == null || dst == null)
throw "NULL point";
int ret = 0;
while(0 == (ret = *src - *dst) && *src != ‘/0’ && *dst != ‘/0’)
{
src++;
dst++;
}
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return ret;
}
char *strcpy(char *dest,const char *source)
{
assert((dest!=NULL)&&(source!=NULL));
char *address = dest;
while(*source!='/0')
{
*dest++=*source++;
}
*dest = '/0';
return address;
}
char * strncpy(char * dest,const char *src,size_t count)
{
char *tmp = dest;
while (count-- && (*dest++ = *src++) != '/0')
/* nothing */;
return tmp;
}
char * strcat(char * dest, const char * src)
{
char *tmp = dest;
while (*dest)
dest++;
while ((*dest++ = *src++) != '/0')
;
return tmp;
}
char * strncat(char *dest, const char *src, size_t count)
{
char *tmp = dest;
if (count)
{
while (*dest)
dest++;
while ((*dest++ = *src++))
{
if (--count == 0)
break;
}
}
return tmp;
}
int strncmp(const char * cs,const char * ct,size_t count)
{
register signed char __res = 0;
while (count)
{
if ((__res = *cs - *ct++) != 0 || !*cs++)
break;
count--;
}
return __res;
}
char * strchr(const char * s,char c)
{
for(; *s != c; ++s)
if (*s == '/0')
return NULL;
return (char *) s;
}
size_t strlen(const char * s)
{
const char *sc;
for (sc = s; *sc != '/0'; ++sc)
/* nothing */;
return sc - s;
}
void * memset(void * s,char c,size_t count)
{
char *xs = (char *) s;
while (count--)
*xs++ = c;
return s;
}
void * memcpy(void * dest,const void *src,size_t count)
{
char *tmp = (char *) dest, *s = (char *) src;
while (count--)
*tmp++ = *s++;
return dest;
}
int memcmp(const void * cs,const void * ct,size_t count)
{
const unsigned char *su1, *su2;
signed char res = 0;
for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
if ((res = *su1 - *su2) != 0)
break;
return res;
}
const char * strstr(const char *src, const char *needle)
{
const char *p1, *p2;
p1 = src;
p2 = needle;
while (*src != '/0' && *needle != '/0')
{
if (*src++ != *needle++) {
needle = p2;
src = ++p1; //从下一个字符开始搜索needle
}
}
if (*needle == '/0')
return p1;
return NULL;
}
//int to string
char* itoa(int value, char* string)
{
char tmp[33];
char* tp = tmp;
int i;
unsigned v;
char* sp;
// 将值转为正值
if (value < 0)
v = -value;
else
v = (unsigned)value;
// 将数转换为字符放在数组tmp中
while (v)
{
i = v % 10;
v = v / 10;
*tp++ = i+'0';
}
// 将tmp里的字符填入string指针里,并加上负号(如果有)
//整型---->字符串,要进过倒置
sp = string;
if (value < 0)
*sp++ = '-';
while (tp > tmp)
*sp++ = *--tp;
*sp = 0;
return string;
}
int atoi(char *str)
{
int ret = 0;
int sign = 1;
if(*str == '-')
sign = -1;
else
ret = ret *10 + (*str - '0');
str++;
while(*str!= '/0')
{
ret = ret *10 + (*str - '0');
str++;
}
return sign*ret;
}
字符串操作函数合集
最新推荐文章于 2022-09-19 20:23:30 发布