Strcpy函数实现:
char* myStrcpy(char *dest, const char *src)
{
assert(dest != NULL && src != NULL);
char *address = dest;
while (*address++ = *src++)
{
NULL;
}
//*dest = '\0';
return dest;
}
Strncpy函数实现:
char* myStrncpy(char *dest, const char *src, char ch)
{
assert(dest != NULL && src != NULL);
char *address = dest;
while (*src)
{
while (*src == ch)
{
return NULL;
}
*address++ = *src++;
}
//*dest = '\0'; //这一句可以不要
return dest;
}
Strcmp函数实现:
int myStrcmp(const char *dest, const char *src)
{
assert(dest != NULL && src != NULL);
int ret = 0;
while (!(ret = *(unsigned char*)dest - *(unsigned char*)src) && *dest)
{
++dest;
++src;
}
if (ret > 0)
return 1;
else if (ret < 0)
return -1;
else
return 0;
Strncmp函数实现:
int myStrncmp(const char *dest, const char *src, int count)
{
assert(NULL != dest && NULL != src);
int ret = 0;
while (!(ret = *(unsigned char*)dest - *(unsigned char*)src) && count)
{
dest++;
src++;
count--;
}
if (ret > 0)
return 1;
else if (ret < 0)
return -1;
else
return 0;
}
Strchr函数实现:
//【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
char* myStrchr(const char *src, int value)
{
assert(src != NULL);
//while (*src) // 当value为 '\0' 时这个方法错误
//{
// if (*src == (char)value)
// {
// return (char*)src;
// }
// *src++;
//}
//return NULL;
while (*src && *src != (char)value)
{
src++;
}
if (*src == (char)value)
return (char*)src;
return NULL;
}
Strrchr函数实现:
//【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
char* myStrrchr(char *src, char ch)
{
assert(src != NULL);
int len = strlen(src);
int i;
int count = 0;
for (i = len; i > 0; i--)
{
if (*(src + i) == ch)
{
return (char*)ch;
}
count ++;
printf("count = %d\n", count);
}
return NULL;
}
strcat() 函数用来连接字符串,其原型为:
char *strcat(char *dest, const char *src);
【参数】dest 为目的字符串指针,src 为源字符串指针。
strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。
注意:dest 与 src 所指的内存空间不能重叠,且 dest 要有足够的空间来容纳要复制的字符串。
【返回值】返回dest 字符串起始地址。
Strcat函数实现:
char *myStrcat(char *dest, const char *src)
{
assert(NULL != dest && NULL != src);
char *address = dest; // 保存dest的地址
while (*address) // 相当于 while (*address != '\0')
{
address++; // 地址向后偏移
}
while (*address++ = *src++)
{
NULL; //这一句可以不写
}
//*dest = '\0'; //这一句是否可以省略
return dest;
}
Strncat 函数实现:
char *myStrncat(char *dest, const char *src, int num)
{
assert(NULL != dest && NULL != src);
char *address = dest;
while (*address)
{
address++;
}
while (num)
{
*address++ = *src++;
num--;
}
return dest;
}
功 能: 返回字符串长度
用 法: int strlen(char *str);
Strlen函数实现:
int myStrlen(const char *dest)
{
int ret = 0;
while (*dest)
{
dest++;
ret++;
}
return ret;
}
博客转自:http://blog.chinaunix.net/uid-29339253-id-4737064.html