字符串处理源码
来源:互联网 发布:南丹县网络问政平台 编辑:程序博客网 时间:2024/05/21 22:45
strlen: if (ret< 0 ) ret=-1 ; else if (ret> 0 ) ret=1 ; return(ret);
size_t strlen(const char *str)//声明为const char*str,常量指针(常量的指针)说明指针所指内容不能改变
{
assert(str != NULL);//或者assert(str),同一个意思
const char*eos=str;//这里不是为了说不改变str,而另外设置一个临时变量。而是str我们必须记住他的初始,以便后面return里用
while(* eos++);//'/0'会隐式的转换为0,因为'\0'ascii值为0
return (eos-str-1);
}
strcpy:
char *strcpy(char *d,const char *r)
{
assert(d!=null&&r!=null)//两个指针不能为空,尤其目的指针d,事先必须申请内存,也可以assert(d&&r),因为null是系统常量为0
char *dd=d;//必须使用一个临时指针变量记住指针未移动前初始位置
while(((*dd++)=(*r++))!='\0');//可以直接while((*dd++)=(*r++));因为\0的ascii值为0
return d;
}
strcmp:
int strcmp(const char *s,const char*d)
{
assert(s!=null&&d!=null);
int ret=0;
while(!(ret=*(unsigned char*)s-*(unsignedchar*)d)&&*d)//不用判断*s是否到结尾了,如果到结尾了肯定不想等了,早就结束了。其实两字符串不相等时不会用到&&*d,只有相等时才会从&&*d结束。
++s,++d;
}
strcat:
char* strcat(char *d,const char *s)
{
assert(d&&s);
char *dd=d;
while(*(++dd));//结束时*dd='\0'
while(*dd++=*s++);
return d;
}
- 字符串处理函数源码
- 字符串处理源码
- Nginx源码分析--字符串处理
- c 字符串处理函数----strtok 源码
- C语言字符串处理函数源码
- Guava字符串处理Joiner源码分析
- 常见c函数源码,字符串处理,strcp…
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 字符串处理
- 处理字符串
- sift特征
- 目标跟踪的研究现状和最新资源
- 再解为啥c里函数传入数组时必须同…
- size_t
- Sql 数据库 join 连接
- 字符串处理源码
- 常见c函数源码,字符串处理,strcp…
- Strcmp函数源码从VC库文件中提取
- _cdecl
- 创业之殇—-我真的很傻逼
- 字符串库函数
- 不定参数函数
- CUDA和OpenCV配置参考
- 整数二进制比特反转