C语言中字符串常用函数--strcat,strcpy
作者:互联网
strcpy
原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 函数实现:- /**********************
- * C语言标准库函数strcpy的一种典型的工业级的最简实现
- * 返回值:目标串的地址。
- * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
- * 参数:
- * strDestination 目标串
- * strSource 源串
- ***********************/
- char *strcpy(char *strDestination,const char *strSource)
- {
- assert(strDestination!=NULL && strSource!=NULL);
- char *strD=strDestination;
- while ((*strD++=*strSource++)!='\0');
- return strDestination;
- }
- /*
- GNU-C中的实现(节选):
- */
- char* strcpy(char *d, const char *s)
- {
- char *r=d;
- while((*d++=*s++));
- return r;
- }
- /* while((*d++=*s++)); 的解释:两层括号是为了取赋值表达式的值,
- 而赋值表达式的值为左操作数,所以在复制NULL后,循环停止 */
strcat
原型
extern char *strcat(char *dest,char *src);用法
#include <string.h> 在C++中,则存在于<cstring>头文件中。功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 函数实现:- //将源字符串加const,表明其为输入参数
- char *strcat(char *strDest, const char *strSrc)
- {
- // 后文return address,故不能放在assert断言之后声明address
- char *address = strDest;
- assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言
- while(*strDest) //是while(*strDest!=’\0’)的简化形式
- {
- //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
- //那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
- //向该字符串的结束标志’\0’。
- strDest++;
- }
- while(*strDest++ = *strSrc++)
- {
- NULL; //该循环条件内可以用++,
- } //此处可以加语句*strDest=’\0’;无必要
- return address; //为了实现链式操作,将目的地址返回
- } 转自:https://blog.csdn.net/dlutbrucezhang/article/details/9284917
标签:src,++,strcat,C语言,char,dest,strcpy,NULL,strDest 来源: https://www.cnblogs.com/qiumingcheng/p/11370310.html