一、函数strcat与stcncat的函数实现
1、strcat函数的实现
要求:
原型:char * strcat(char *dest, const char *src);
头文件:#include <string.h>
功能:1、dest 为目的字符串指针,src 为源字符串指针。strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;
2、dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。
说明:
返回值:dest 字符串起始地址。
说明:
返回值:dest 字符串起始地址。
strcat代码功能的实现
char* MyStrcat(char *dst, const char *src) { assert(dst != NULL && src != NULL); //assert函数的头文件为#include <assert.h> char *temp = dst; while (*temp != '\0') temp++; while ((*temp++ = *src++) != '\0'); return dst; }
注意:1、dest 与 src 指针不能为NULL,并且所指的内存空间不能重叠,且 dest 要有足够的空间来容纳要复制的字符串。
2、assert是用来避免显而易见的错误的,而不是处理异常的。错误和异常是不一样的,错误是不应该出现的,异常是不可避免的。
2、strncat函数的实现
要求:
原型:char *strncat(char *dest, const char *src, size_t n);
头文件:#include <string.h>
功能:把src所指字符串的前n个字符添加到dest结尾处,覆盖dest结尾处的'/0',实现字符串连接。
说明:
返回值:dest 字符串起始地址。
返回值:dest 字符串起始地址。
strncat代码功能的实现
char *strncat_m(char *dest,const char *str,int n) { assert((dest!=NULL)&&(str!=NULL)); char *cp=dest; //移动指针到末尾 while(*cp!='\0') ++cp; while(n&&(*cp++=*str++)!='\0') { --n; } return dest;
}
注意事项与strcat一致,不过要注意n的取值范围