strcpy、strcmp、strcat、strlen、strstr,memset
2013-08-18 00:30
369 查看
C语言字符串函数
[cpp] view plaincopyprint?
strcpy的源代码:
strcpy的源代码:
char *strcpy(char *des, const char *src)
{
assert(des != NULL && src != NULL);
char *pStr = des;
while( (*des++ = *src++) != '\0')
NULL;
return pStr;
}
strcmp的源码:
strcmp的源码:
int __cdecl strcmp (const char *src, const char *dst)
{
int ret = 0 ;
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
{
++src;
++dst;
}
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
}
http://blog.csdn.net/peterpan19890802/article/details/5459569
//为什么要转unsigned char 类型呢?那是因为大于127的数如果是signed类型要转为负数 那就不行了。如a=129 那么实际等于-126 b=6 那么a<b了实际上却是a>b所以要装为unsigned,因为ascii码是0-----255之间都有可能。
strcat的源码:
strcat的源码:
char *strcat(char *des, const char *src)
{
assert(*des != NULL && *src != NULL);
char *pStr = des;
while (*des != '\0')
des++;
while ((*des++ = *src++) != '\0')
NULL;
return pStr;
}
[cpp] view plaincopyprint?
strlen的源码:
strlen的源码:
[cpp] view plaincopyprint?
int strlen(const char *pStr)
{
assert(pStr != NULL);
int len = 0;
while (*pStr++ != '\0')
len++;
return len;
}
memset.c
strstr的源码:
strstr的源码:
char *myStrstr(const char *des, const char *src)
{
assert(des != NULL && src != NULL);
char *d = des;
char *s = src;
for (; d != '\0'; des++)
{
for (d = des, s = src; (s != '\0') && (*d == *s); d++, s++)
NULL;
if (*s == '\0')
return des;
}
return NULL;
[cpp] view plaincopyprint?
strcpy的源代码:
strcpy的源代码:
char *strcpy(char *des, const char *src)
{
assert(des != NULL && src != NULL);
char *pStr = des;
while( (*des++ = *src++) != '\0')
NULL;
return pStr;
}
strcmp的源码:
strcmp的源码:
int __cdecl strcmp (const char *src, const char *dst)
{
int ret = 0 ;
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
{
++src;
++dst;
}
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
}
http://blog.csdn.net/peterpan19890802/article/details/5459569
//为什么要转unsigned char 类型呢?那是因为大于127的数如果是signed类型要转为负数 那就不行了。如a=129 那么实际等于-126 b=6 那么a<b了实际上却是a>b所以要装为unsigned,因为ascii码是0-----255之间都有可能。
strcat的源码:
strcat的源码:
char *strcat(char *des, const char *src)
{
assert(*des != NULL && *src != NULL);
char *pStr = des;
while (*des != '\0')
des++;
while ((*des++ = *src++) != '\0')
NULL;
return pStr;
}
[cpp] view plaincopyprint?
strlen的源码:
strlen的源码:
[cpp] view plaincopyprint?
int strlen(const char *pStr)
{
assert(pStr != NULL);
int len = 0;
while (*pStr++ != '\0')
len++;
return len;
}
memset.c
/* Public domain. */ |
#include <stddef.h> |
void * |
memset (void *dest, int val, size_t len) |
{ |
unsigned char *ptr = dest; |
while (len-- > 0) |
*ptr++ = val; |
return dest; |
} |
strstr的源码:
strstr的源码:
char *myStrstr(const char *des, const char *src)
{
assert(des != NULL && src != NULL);
char *d = des;
char *s = src;
for (; d != '\0'; des++)
{
for (d = des, s = src; (s != '\0') && (*d == *s); d++, s++)
NULL;
if (*s == '\0')
return des;
}
return NULL;
相关文章推荐
- mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- 常用函数strcpy strcat strcmp strlen memcpy memset
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- C语言字符串函数详解(2) strcpy、strcmp、strcat、strlen、strstr
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- strcat,strcpy,strcmp,strstr,memset,memcpy,strsep在内核中的实现
- c语言:strcpy、strncpy、 Strcat、 Strcmp 、strchr、 strstr、 Strlen等函数功能
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- strlen,strcpy,strcat,strcmp,strstr各代表什么意思
- (C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数
- 模拟实现strlen,strcpy,strcat,strstr,strcmp,memcpy,memmove
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr,
- strcpy memcpy strcat strcmp memset strlen