strcat(连接两字符串)
来源:互联网 发布:勇者之塔守护进阶数据 编辑:程序博客网 时间:2024/05/23 09:51
函数定义:char *strcat (char *dest,const char *src)
函数说明:strcat()会将参数src字符串拷贝到参数dest所指的字符串尾,第一个参数dest要有足够的空间来容纳要拷贝的字符串;
返回值: 返回dest字符串参数的起始地址;
接下来分三种情况来看strcat()函数是可行:
方案一:两个参数都是数组
得到的结果是:dest:[HelloWorld]
函数说明:strcat()会将参数src字符串拷贝到参数dest所指的字符串尾,第一个参数dest要有足够的空间来容纳要拷贝的字符串;
返回值: 返回dest字符串参数的起始地址;
接下来分三种情况来看strcat()函数是可行:
方案一:两个参数都是数组
点击(此处)折叠或打开
- #include <string.h>
- #include <stdio.h>
- int main(void)
- {
- char dest[30] = "Hello";
- char src[] = "World";
- strcat(dest, src);
- printf("dest:[%s]\n", dest);
- return 0;
- }
得到的结果是:dest:[HelloWorld]
方案二:两个参数都是指针
得到的结果却是:Segmentation fault (core dumped)竟然是段错误,为什么呢?
很显然 strcat函数在将src的内容拷贝到dest中是没问题的,但是dest没有足够的空间来存储src中的内容;
修改之后的:
得到的结果为:dest:[World]
方案三:第一个是数组,第二个位指针
显示结果:dest:[HelloWorld]为什么会这样呢?不是说要空间足够的时候才可以拷贝成功的么?
很明显,这属于数组越界的问题,在C语言中,c不检查也不提示,所以这里的拷贝用到了dest[6]后面紧挨着的几个存储单元;
点击(此处)折叠或打开
- #include <stdio.h>
- #include <string.h>
- int main(void)
- {
- char *dest = NULL;
- char *src = "World";
- strcat(dest, src);
- printf("dest:[%s]", dest);
- return 0;
- }
- ~
得到的结果却是:Segmentation fault (core dumped)竟然是段错误,为什么呢?
很显然 strcat函数在将src的内容拷贝到dest中是没问题的,但是dest没有足够的空间来存储src中的内容;
修改之后的:
点击(此处)折叠或打开
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(void)
- {
- char *dest = NULL;
- dest = (char *)malloc(1024);
- char *src = "World";
- strcat(dest, src);
- printf("dest:[%s]", dest);
- return 0;
- }
- ~
得到的结果为:dest:[World]
方案三:第一个是数组,第二个位指针
点击(此处)折叠或打开
- #include <stdio.h>
- #include <string.h>
- int main(void)
- {
- char dest[6] = "Hello";
- char *src = "World";
- strcat(dest, src);
- printf("dest:[%s]\n", dest);
- return 0;
- }
很明显,这属于数组越界的问题,在C语言中,c不检查也不提示,所以这里的拷贝用到了dest[6]后面紧挨着的几个存储单元;
方案四:第一个指针,第二个数组
看到这里,都会知道肯定是dest的空间不足,无法拷贝src中的内容;
所以输出结果是:Segmentation fault (core dumped)
更改之后:
OK输出结果是:dest:[World]
点击(此处)折叠或打开
- #include <stdio.h>
- #include <string.h>
- int main(void)
- {
- char *dest;
- char src[] = "World";
- strcat(dest, src);
- printf("dest:[%s]\n", dest);
- return 0;
- }
所以输出结果是:Segmentation fault (core dumped)
更改之后:
点击(此处)折叠或打开
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(void)
- {
- char *dest;
- dest = (char *)malloc(1024);
- char src[] = "World";
- strcat(dest, src);
- printf("dest:[%s]\n", dest);
- return 0;
- }
O(∩_∩)O哈哈哈~想必这下这个函数不会再出类似的错误了吧
0 0
- strcat(连接两字符串)
- C语言strcat(连接两字符串)用起来真不爽
- 字符串连接(strcat)的函数
- strcat 字符串连接
- 使用strcat连接字符串
- 连接字符串strcat()函数
- c++实现字符串strcat()连接
- 连接两个字符串,不用strcat
- c语言连接多个字符串(strcat函数实现)
- 实现两个字符串的连接(strcat函数)
- strcat 连接字符串,c语言实现
- strcat()连接两个字符串的问题分析
- 连接两个字符串不用strcat函数
- strcat()连接两个字符串的问题分析
- C语言strcat()函数:连接字符串
- 两个字符串连接,不用strcat函数
- strcat函数——字符串连接函数
- 自写字符串连接函数strcat
- js表单验证方法1
- 最近公共父节点
- 网络编程学习笔记一:Socket编程
- WindowsBatchScripting_D
- 2016"百度之星" - 资格赛 Problem B
- strcat(连接两字符串)
- ios 调用系统照片库/拍照/录像
- getSession getHibernateTemplate用哪个?
- apk汉化 签名
- 请问socket编程的开发环境包括什么?比如软件,语言等
- Android自定义View之仿知乎滑动删除Activity
- openssl/des.h not find
- 你不知道的 与 或
- Listview和Gridview嵌套动态扩充列表高度