基础c字符串相关函数的源码实现
来源:互联网 发布:淘宝手机助手2017 编辑:程序博客网 时间:2024/06/04 23:26
本文说明的是c函数字符串的库源码的实现方式。
其中函数声明方式:
__cdecl 是C 声明的缩写(Declaration),是C语言默认的函数调用方法:所有参数从右到左依次入栈,参数由调用者清除,即手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。
_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的函数在返回清除,即自动清除,使用的指令是 retnX,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。函数在编译的时候就必须确定参数个数,并且调用者必须严格的控制参数的生成,不能多或少,否则会编译出错。
字符串比较
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 );}
字符串拷贝
char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst );}
字符串拼接
char * __cdecl strcat ( char * dst, const char * src ){ char * cp = dst; while( *cp ) cp++; /* find end of dst */ while( *cp++ = *src++ ) ; /* Copy src to end of dst */ return( dst ); /* return dst */}
字符串拷贝
char * __cdecl strncpy ( char * dest, const char * source, size_t count ){ char *start = dest; while (count && (*dest++ = *source++)) /* copy string */ count--; if (count) /* pad out with zeroes */ while (--count) *dest++ = '\0'; return(start);}
查找指定字符串
char * __cdecl strstr ( const char * str1, const char * str2 ){ char *cp = (char *) str1; char *s1, *s2; if ( !*str2 ) return((char *)str1); while (*cp) { s1 = cp; s2 = (char *) str2; while ( *s1 && *s2 && !(*s1-*s2) ) s1++, s2++; if (!*s2) return(cp); cp++; } return(NULL);}
查找字符串中最后出现的指定字符
char * __cdecl strrchr ( const char * string, int ch ){ char *start = (char *)string; while (*string++) /* find end of string */ ; /* search towards front */ while (--string != start && *string != (char)ch) ; if (*string == (char)ch) /* char found ? */ return( (char *)string ); return(NULL);}
- 基础c字符串相关函数的源码实现
- 字符串相关函数的实现
- VB.NET基础 字符串相关的函数
- C中与字符串相关的函数
- c字符串函数源码
- ANSI C字符串相关的实现
- C语言字符串相关方法的实现
- 【js基础】字符串相关函数
- c++字符串操作函数的源码实现
- C语言中字符串相关函数的实现(strcat strlen strcmp strcpy memcpy)
- C语言字符串相关函数
- C字符串处理相关函数
- 字符串的相关函数
- 字符串的相关函数
- C语言基础系列--返回字符串函数的四种实现方法
- C语言基础3:字符串函数的实现(笔试考题)
- C语言字符串替换函数,字符串插入函数的实现
- C字符串函数实现
- mtl_supply表的作用
- 通用型游戏资源提取工具介绍收藏
- 10个工具让你的 shell 脚本更强大
- vim查看源码常用功能
- HDOJ2018(简单规律)
- 基础c字符串相关函数的源码实现
- 畅通工程
- Linux服务器故障排查实用指南
- 《重构--改善既有代码的设计》读书笔记之三:分解并重组statement() part2
- Hibernate的锁机制
- Codeforces Round #178 (Div. 2)
- 多数据源的MapReduce作业(三)--map侧过滤后在reduce侧联结
- 【COCOS2DX-LUA 脚本开发之二】LUA语言基础
- 【COCOS2DX-LUA 脚本开发之四】使用tolua++编译pkg,从而创建自定义类让Lua脚本使用