strcat()函数,用于两个字符串的拼接。

(1)函数原型:

char *  strcat(char *Dest,const char * Source);

(2)头文件:

#include <string.h>

(3)功能:

将const char * Source所指代的字符串,拼接到char *Dest后面。不会做溢出检查。

(4)基础实例代码

    char a[30] = "zobol";
char b[30] = "的魔法小屋";
strcat(a,b);
printf("%s\n",a);

(5)输出情况



(6)基础实例代码2

	for(int i=0;i<30;++i)
{
printf("%d ",a[i]);//进行一个循环输出,以整数形式因为很多数值没有可显示的asicc码 )
}
for(int i=0;i<30;++i)
{
printf("%d ",b[i]);
} strcat(a,b); //进行一个拼接
for(int i=0;i<30;++i)
{
printf("%d ",a[i]);
}

(7)输出情况:

(8)问题1:如果char *Dest对应的字符串没有足够位置容纳const char * Source的字符串怎么办?

回答:C语言没有给出办法,无论空间够不够都会进行强制拼接,因此会产生越界溢出,影响其他区域的数据。因此使用要小心。

	char a[10] = "zobol"; //容量不够,至少需要15+1
char b[10] = "的魔法小屋";
strcat(a,b);

(9)问题2:如果const char * Source、char *Dest不是字符串,而只是字符数组,会怎么样?

回答:const char * Source指向的是一个字符数组,没有关系,函数会自动读取到数组结束。char *Dest结果类似问题1

	char a[30] = "zobol";
char b[10] = "的魔法小屋";//没有空间给'0'
strcat(a,b);

C语言学习之我见-strcat()字符拼接函数(有缺陷)的更多相关文章

  1. C语言学习之我见-strcpy()字符串复制函数

    strcpy()函数,用于两个字符串值的复制. (1)函数原型 char * strcpy(char * _Dest,const char * _Source); (2)头文件 string.h (3 ...

  2. C语言学习之我见-strlen()字符串长度函数

    strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...

  3. C语言学习之我见-strncpy()字符串复制函数(可控制范围)

    strncpy()函数,用于两个字符串值的复制. (1)函数原型 char *strncpy(char * _Dest,const char * _Source,size_t _Count); (2) ...

  4. C语言学习之我见-strncat()可调整的字符串拼接函数

    strncat()函数,用于两个字符串的拼接. (1)函数原型 char * strncat(char * Dest,const char * Source,size_t _Count)` (2)头文 ...

  5. C语言学习之我见-memchr()内存查找字符函数

    memchr()内存查找字符函数:主要用于从内存中查找自己需要的字符位置. (1)函数原型: void *memchr(const void *_Buf ,int _Val,size_t _MaxCo ...

  6. C语言学习之我见-malloc和free内存申请及释放函数

    malloc函数负责向计算机申请确定大小的内存空间. free函数负责释放malloc的申请空间. (1)函数原型 void free(void *_Memory); void * malloc(si ...

  7. C语言学习之我见-strncmp()字符串比较函数(控制范围)

    strncmp()函数,用于范围内,两个字符串的比较,n表示最大比较范围. (1)函数原型 int strncmp(const char *_Str1,const char *_Str2,size_t ...

  8. C语言学习之我见-strcmp()字符串比较函数

    strcmp()函数,用于两个字符串的比较. (1)函数原型 int strcmp(const char *_Str1,const char *_Str2); (2)头文件 string.h (3)功 ...

  9. Go语言学习之3 流程控制、函数

    主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...

随机推荐

  1. python---用顺序表实现双端队列

    class Dqueue(object): """双端队列""" def __init__(self): self.__list = [] ...

  2. LC-454

    题目 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < ...

  3. jni有关知识点总结

    一.c/c++语言: 1.关于动态链接库的搜索问题: LIBRARY_PATH is used by gcc before compilation to search for directories ...

  4. The 18th Zhejiang Provincial Collegiate Programming Contest

    The 18th Zhejiang Provincial Collegiate Programming Contest GYM链接 https://codeforces.com/gym/103055 ...

  5. ADO访问Excel

    需要安装驱动:Microsoft Access Database Engine,可搜索下载,有64位和32位之分. 随便新建一个后缀名为udl的文件,双击打开.注意,现如今一般都是64位系统,双击打开 ...

  6. Go 语言接口及使用接口实现链表插入

    @ 目录 1. 接口定义 1.1 空接口 1.2 实现单一接口 1.3 接口多方法实现 2. 多态 2.1 为不同数据类型的实体提供统一的接口 2.2 多接口的实现 3. 系统接口调用 4. 接口嵌套 ...

  7. 微博python爬虫weiboSpider注意事项

    首先我看的weiboSpider爬虫项目教程出自https://github.com/dataabc/weiboSpider 1.这爬取的是手机端的,所以我把网址https://weibo.com的. ...

  8. Redis为什么变慢了?透彻解读如何排查Redis性能问题

    Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右.但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符. 你也 ...

  9. 3D打印CLI文件格式的读取

    CLI 英文全称:COMMON LAYER INTERFACE 中文名称:通用层接口. 推荐从官方网址看一下其完整的内容: (https://www.hmilch.net/downloads/cli_ ...

  10. SICP 2.2: 层次性数据和闭包性质(Python实现)

    绪论 序对可以为我们提供用于构造复合数据的基本"粘接剂",鉴于Python中tuple中元素不可变的性质,我们通过list来实现序对,如[1, 2].Python的PyListOb ...