C语言中strcat和strcpy的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中strcat和strcpy的区别相关的知识,希望对你有一定的参考价值。
请问strcat是连接用的,对吗?那就是说把字符串2复制一下到字符串1后面并和字符串1连接起来,连完之后就变成了字符串1+字符串2 和字符串2两个字符串了吗?
然后,strcpy就是和strcat一个道理只不过在把字符串2复制到字符串1的同时,还要把字符串1的内容给覆盖,是这样吗?
我的理解对吗?请麻烦帮我举例区别一下strcat和strcpy的用法好吗?谢谢
一、功能不同
1、strcat:字符串复制。把从src地址开始且含有'\\0'结束符的字符串复制到以dest开始的地址空间。
2、strcpy:把两个字符串连接起来,把src所指字符串添加到dest结尾处。
二、用法不同
1、strcat:char *strcpy(char* dest, const char *src)。
2、strcpy:extern char *strcat(char *dest,char *src)。
三、规定不同
1、strcat:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
2、strcpy:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
参考资料来源:百度百科-strcpy
参考资料来源:百度百科-strcat
参考技术A 1、strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。2、strcpy是用来把字符串拷贝到指定的地方的,原型是char *strcpy(char *dest,const char *src),作用是把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
3、注意strcat是从dest的结尾处开始操作的,而strcpy是直接覆盖dest指向的内容。 参考技术B 1、strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
2、strcpy是用来把字符串拷贝到指定的地方的,原型是char *strcpy(char *dest,const char *src),作用是把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
3、注意strcat是从dest的结尾处开始操作的,而strcpy是直接覆盖dest指向的内容。
strcat在C语言中代表的是追加字符串的函数,作用是将A字符串追加到B字符串末尾,A字符串值保持不变,B字符串变长,追加时需要保证B字符串在加上A之后依旧不能溢出。
strcat 声明
下面是 strcat() 函数的声明。
char *strcat(char *dest, const char *src)
strcat 参数
dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。
strcat 返回值
该函数返回一个指向最终的目标字符串 dest 的指针 参考技术C 非常正确
你都把函数使用的细节掌握了,例子不必了吧,一个是连接函数,另一个是拷贝函数,这区别够明显了吧本回答被提问者采纳 参考技术D 1、strcat是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
2、strcpy是用来把字符串拷贝到指定的地方的,原型是char *strcpy(char *dest,const char *src),作用是把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
3、注意strcat是从dest的结尾处开始操作的,而strcpy是直接覆盖dest指向的内容。
c语言中strcpy跟mencpy哪个效率更高?
mencpy为内存拷贝函数,直接指针操作内存块,不考虑存储的内容,效率高,但操作不当容易出错strcpy为字符串拷贝函数,必须提供源字符串指针和目标字符串指针 速度上比不过mencpy,但更具针对性,拷贝字符串时建议用strcpy不要用mencpy 参考技术A memcpy是内存拷贝,strcpy是字符串拷贝,当然是memcpy数度快。而且memcpy对数据没有限制,而strcpy要求拷贝的数据为字符,否则会出问题。 参考技术B 1:区别
memcpy可以拷贝任何数据类型的对象,指定拷贝的数据长度。
strcpy只能拷贝字符串了,它遇到'\0'就结束拷贝
memcpy()充分利用了机器字长为32位的特性(32位系统,一次内存读/写可操作4字节的数据, 对于64位系统,则一次可操作8字节数据)。先按4字节一组(movsl)拷贝,共复制n/4次;对剩下的零头再逐字节拷贝。如果支持,memcpy()还可以使用了MMX/SSE指令增加一次操作中的字节数,进一步提高效率。
3:健壮性
拷贝的缓冲区如果是非字符串,尽量用memcpy(),其实字符串使用memcpy也是很好的选择。你说的溢出可能是使用strcpy的\0结束问题或者是用memcpy指定的拷贝长度不对造成的
以上是关于C语言中strcat和strcpy的区别的主要内容,如果未能解决你的问题,请参考以下文章
c语言 strcpy,strcat,strcmp函数模拟实现