转载:https://blog.csdn.net/smf0504/article/details/52055971

C\C++中strcat()函数
           
           
               
                   
                    原创                                                                                                                                            荪荪
                    最后发布于2016-07-28 15:44:28                   
                    阅读数 83291
                   
                       
                        收藏
                   
                                   
                                发布于2016-07-28 15:44:28
               
                                                       
                           分类专栏:
                                                                                            
                                       C/C++                                  
                                                                                 
                                                                                                                                                      
                       
                           
                           
                                版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                           
                           
                                本文链接:https://blog.csdn.net/SMF0504/article/details/52055971
                           
                        
                       
                                                                               
               
                                                                展开

将两个char类型链接。

char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);

结果放在d中

printf("%s",d);

输出 d 为 GoldenGlobalView (中间无空格)

d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。

返回指向d的指针。

C函数
编辑

原型

extern char *strcat(char *dest,char *src);

用法

#include <string.h>

在C++中,则存在于<cstring>头文件中。

功能

把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。

说明

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

举例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

// strcat.c

#include <syslib.h>

#include <string.h>

main()

{

char d[20] = "GoldenGlobal";

char* s = "View";

clrscr();

strcat(d,s);

printf("%s",d);

getchar();

return 0;

}

// strcat.cpp

#include <iostream>

#include <cstring>

#include <cstdlib>

int main()

{

using namespace std;

char d[20] = "GoldenGlobal";

char* s = "View";

system("cls");

strcat(d,s);

cout << d << endl;

system("pause");

return 0;

}

程序执行结果为:

GoldenGlobalView

Strcat函数原型如下(以下代码为错误代码,想要通过char *指针修改字符串常量中的字符会导致Segment fault错误):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

/*

* 注意以下代码有问题:

* 1. 指针strDest被修改了,实际在使用中并不会去调用返回值来重新获取strDest原来的值

* 2. 代码注释不该这么写,函数注释只需要写使用方法,无需写实现过程[所以实现过程尽量保证正确]

*/

//将源字符串加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;//为了实现链式操作,将目的地址返回

}

4 char *mystrcat(char *dst,const char *src) //用自己的方式实现strcat函数功能

5 {

6     char *p=dst;  //下面的操作会改变目的指针指向,先定义一个指针记录dst

7     while(*dst!='\0')dst++;

8     while(*src!='\0')*dst++=*src++;

9     *dst='\0';

10 return p;  //dst现在指向拼接后的最后一位字符,在这里返回dst,会出现错误

11 }
————————————————
版权声明:本文为CSDN博主「荪荪」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/smf0504/article/details/52055971

C\C++中strcat()函数的更多相关文章

  1. C\C++中strcat()函数、sprintf函数

    http://blog.csdn.net/smf0504/article/details/52055971 http://c.biancheng.net/cpp/html/295.html

  2. 由strcat函数引发的C语言中数组和指针问题的思考

    问题一 首先,来看一下下面这段代码: #include <stdio.h> #include <string.h> int main() { char *str = " ...

  3. C/C++中连接函数strcat的应用(简单讲解)

    有位学弟问到我如何将两个字符连接起来,想想java/python里面可以直接用+连接起来,可是C/C++里面有没有这么方便的做法呢? 答案是有的,在C语言的string.h库中有个神奇的函数叫做str ...

  4. C\C++ 中的 strcat() 函数 —— 字符串的插入、拼接

    转载链接:http://blog.csdn.net/smf0504/article/details/52055971 函数原型 extern char *strcat(char *dest,char ...

  5. strcat函数造成的段错误(Segmentation fault)

    转自:http://book.51cto.com/art/201311/419441.htm 3.21  strcat函数造成的段错误 代码示例 int main() { char dest[7]=& ...

  6. strcat函数的坑点

    我们先看下面这样一段代码: #include <iostream> #include <stdlib.h> using namespace std; int main() { ...

  7. C语言中strcpy,strcmp,strlen,strcat函数原型

    //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char ...

  8. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  9. CPP strcat函数使用

    strcat函数原型 char * strcat ( char * destination, const char * source ); strcat常见写法 // main.cpp // 字符数组 ...

随机推荐

  1. 跳转语句 break 和 continue

    break跳出循环体,结束本次循环. continue结束本次循环. for(var i=0; i<5; i++){ if(i == 3) break; document.write(" ...

  2. 【Android】Android开发初学者实现拨打电话的功能,拨打电话app小demo实现

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先先给大家看一下最终实现的效果: ...

  3. 如何写好转正答辩PPT

    如何写好一个转正答辩报告 几个月前,我刚经历了转正答辩,这是我职业生涯中转正答辩表现最好的一次.在我之前经历的几家公司中,转正的流程各不相同,我将它们为主动式和被动式.这里的被动式指的是:公司是主动方 ...

  4. 关于js重名方法的先后调用问题

    当js中方法重名时,最后引入的js会覆盖前面的引入的js(就是说会调用最后引入的js中的方法)详情参照(main.js与white.js 的a())但是,当最后一个js中存在语法上的错误时(也可以是本 ...

  5. HDU多校1003-Divide the Stones(构造)

    Problem Description There are n stones numbered from 1 to n.The weight of the i-th stone is i kilogr ...

  6. SpringBoot系列之从入门到精通系列教程

    对应SpringBoot系列博客专栏,例子代码,本博客不定时更新 Spring框架:作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多, ...

  7. redis在windows下安装教程

    安装过程 1.首先先把下载的压缩包解压到一个文件夹中2.打开cmd指令窗口3.输入你刚才解压的文件路径4.然后输入redis-server redis.windows.conf 命令接下来部署Redi ...

  8. 14_Python语法示例(面向对象)

    1.自己写一个Student类,此类的对象有属性name, age, score, 用来保存学生的姓名,年龄,成绩 # 1)写一个函数input_student读入n个学生的信息,用对象来存储这些信息 ...

  9. sql如何查询不包含中文

    SELECT * FROM dbo.表名 WHERE 字段名 NOT LIKE '%[吖-座]%'

  10. Linux:文件和用目录权限基础

    首先,用ls -i 查看文件的信息: 红框框起来的部分:-rw-r--r-- 一共是10位,第一位表示文件类型,-表示文件,d表示文件夹/目录:后面9位则表示权限 其中前三位是该文件/目录所属者的权限 ...