原文链接:http://blog.sina.com.cn/s/blog_67b077fe01018w36.html
1)字符串拷贝
-
char
* strcpy( char *strDest, const char *strSrc ) -
{
-
if(strDest == strSrc) { return strDest; } -
assert( (strDest != NULL) && (strSrc != NULL) ); -
char *address = strDest; -
while( (*strDest++ = * strSrc++) != '/0' ); -
return address; - }
-
//字串末尾要加结束符'/0',不然输出错位结果
-
char
*strncpy(char *strDes, const char *strSrc, unsigned int count) -
{
-
assert(strDes != NULL && strSrc != NULL); -
char *address = strDes; -
while (count-- && *strSrc != '/0') -
*strDes++ = *strSrc++; -
*strDes = '/0'; -
return address; - }
2)字符串比较
-
int
strcmp(const char *s, const char *t) -
{
-
assert(s != NULL && t != NULL); -
while (*s && *t && *s == *t) -
{ -
++ s; -
++ t; -
} -
return (*s - *t); - }
-
-
int
strncmp(const char *s, const char *t, unsigned int count) - {
assert((s != NULL) && (t != NULL)); -
while (*s && *t && *s == *t && count --) -
{ ++ s; ++ t; } -
return (*s - *t); - }
3)字符串连接
-
char
*strcat(char *strDes, const char *strSrc) -
{
-
assert((strDes != NULL) && (strSrc != NULL)); -
char *address = strDes; -
while (*strDes != '/0') -
++ strDes; -
while ((*strDes ++ = *strSrc ++) != '/0') -
NULL; -
return address; - }
-
char
*strncat(char *strDes, const char *strSrc, unsigned int count) -
{
-
assert((strDes != NULL) && (strSrc != NULL)); -
char *address = strDes; -
while (*strDes != '/0') -
++ strDes; -
while (count -- && *strSrc != '/0' ) -
*strDes ++ = *strSrc ++; -
*strDes = '/0'; -
return address; -
}
4)字符串长度
-
int
strlen(const char *str) -
{
-
assert(str != NULL); -
int len = 0; -
while (*str ++ != '/0') -
++ len; -
return len; - }
5)字符串匹配
-
char
*strstr(const char *strSrc, const char *str) -
{
-
assert(strSrc != NULL && str != NULL); -
const char *s = strSrc; -
const char *t = str; -
for (; *strSrc != '/0'; ++ strSrc) -
{ -
for (s = strSrc, t = str; *t != '/0' && *s == *t; ++s, ++t) -
NULL; -
if (*t == '/0') -
return (char *) strSrc; -
} -
return NULL; - }
6)内存块复制
-
void
*memcpy(void *dest, const void *src, unsigned int count) -
{
-
assert((dest != NULL) && (src != NULL)); -
void *address = dest; -
while (count --) -
{ -
*(char *) dest = *(char *) src; -
dest = (char *) dest + 1; -
src = (char *) src + 1; -
} -
return address; - }
7)内存块赋值初始化
-
void
*memset(void *str, int c, unsigned int count) -
{
-
assert(str != NULL); -
void *s = str; -
while (count --) -
{ -
*(char *) s = (char) c; -
s = (char *) s + 1; -
} -
return str; - }