strcat的应用
来源:互联网 发布:google tensorflow教程 编辑:程序博客网 时间:2024/04/27 18:17
函数定义: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;
- }
原文:http://blog.chinaunix.net/uid-26914516-id-4215338.html
【FROM MSDN && 百科】
原型:char *strcat(char *dest,const char *src);
#include<string.h>
Append a string.
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
DEMO1:实现自己的strcat函数
DEMO2: strcpy && strcat
结果输出:string = Hello world from strcpy and strcat!
DEMO3:str1 + str2 =str3
原文:http://blog.csdn.net/hgj125073/article/details/8439448
0 0
- strcat的应用
- gets,strcmp,strcat,strchr,strstr的应用
- 模拟函数strcat及应用
- strcat函数的使用
- strcat出现的问题
- strcpy, strcat 的问题
- strcat 的实现
- strcat()函数的实现
- strcat strncat的使用方法
- strcat函数的实现
- strcat 引发的思索
- strcat 函数的实现
- strcat函数的实现
- strcat的实现
- strcat函数的用法
- strcat()的实现
- strcat函数的使用
- strcat
- C/C++遍历文件夹和文件
- jdk5新特性
- Android数据库ORM框架-greenDAO
- 文献回顾方法(Systematic Literature Review,SLR)
- [AHK]利用AutoHotkey辅助设计
- strcat的应用
- PHP学习之--字符串与正则表达式
- 《Java并发编程实战》读书笔记三:使用Executor框架
- Spring3- Spring 自动装配 Bean
- OpenStack网络指南(3)覆盖(隧道)协议
- C++动态数组
- Windows查看内存信息
- OJ 2011: C语言实验——找中间数
- 注解