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语言中字符串常用函数--strcat,strcpy

C语言strcat函数怎么用

c 语言 strcpy

c语言 strcpy,strcat,strcmp函数模拟实现

C语言——模拟实现库函数(strcat,strcmp,strcpy,srelen)

C 实现strcmp,strcpy,strcat函数