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.youkuaiyun.com/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;
本文详细介绍了C语言中常用的字符串函数的实现原理及其源代码,包括strcpy(字符串复制)、strcmp(字符串比较)、strcat(字符串连接)、strlen(字符串长度计算)和strstr(字符串查找)等。通过这些源代码的展示,读者可以深入了解这些函数的工作机制。
458

被折叠的 条评论
为什么被折叠?



