strcat源代码汇总
2015-11-26 16:08
260 查看
1. ibc(Linux下的ANSI C的函数库)
2. 微软
3. GNU C Library对这个函数的实现如下:
4,OpenBSD对这个函数的实现如下:
5. 网上实现:
写成下面这样或许好理解一点。
char * strcat(char * dest, const char * src) { char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != '\0') ; return tmp; }
2. 微软
char* 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 */ }
3. GNU C Library对这个函数的实现如下:
char * strcat (char *dest, const char *src) { //通过strcpy来实现strcat函数 strcpy (dest + strlen (dest), src); return dest; }
4,OpenBSD对这个函数的实现如下:
char * strcat(char *s, const char *append) { //将s所指向的字符串的首地址保存下来,以便使用 char *save = s; //将s所指向的字符串的首指针移至串尾处,s指针指向的字符元素为'\0' for (; *s; ++s); //将append所指的字符串的元素复制到s所指向的字符串尾部,直至遇到'\0' while ((*s++ = *append++) != '\0'); //返回追加后的字符串首地址 return(save); }
5. 网上实现:
#include <assert.h> char *strcat (char * dst, const char * src) { assert(NULL != dst && NULL != 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 *strcat (char * dst, const char * src) { assert(NULL != dst && NULL != src); // 源码里没有断言检测 char * cp = dst; while( '\0' != *cp ) cp++; /* find end of dst */ while( '\0' != (*cp++ = *src++) ) ; /* Copy src to end of dst */ return( dst ); /* return dst */ }
相关文章推荐
- C# dynamic关键字的使用方法
- github使用
- 在Java的Struts框架中ONGL表达式的基础使用入门
- python (winpython) 下载地址
- [python]python字典
- PHP获取昨天时间戳,当前时间信息数组,上周与上周所在的年份,上月与上月所在的年份
- 问题
- php客户端neoclient遍历neo4j中的节点和关系及其属性等
- php xdebug配置
- C++primer plus第六版课后编程练习答案6.6
- php设计模式
- C# 装箱和拆箱
- PHP与MySQL开发中的字符编码问题
- python3.X安装matplotlib简单方法
- freeswitch会议模块lua脚本
- Java 与无符号那些事儿
- struts2 流程分析
- python自学笔记 20151126
- C++primer plus第六版课后编程练习答案6.5
- 在PHP语言中使用JSON