C语言学习之我见-strcat()字符拼接函数(有缺陷)
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()字符拼接函数(有缺陷)的更多相关文章
- C语言学习之我见-strcpy()字符串复制函数
strcpy()函数,用于两个字符串值的复制. (1)函数原型 char * strcpy(char * _Dest,const char * _Source); (2)头文件 string.h (3 ...
- C语言学习之我见-strlen()字符串长度函数
strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...
- C语言学习之我见-strncpy()字符串复制函数(可控制范围)
strncpy()函数,用于两个字符串值的复制. (1)函数原型 char *strncpy(char * _Dest,const char * _Source,size_t _Count); (2) ...
- C语言学习之我见-strncat()可调整的字符串拼接函数
strncat()函数,用于两个字符串的拼接. (1)函数原型 char * strncat(char * Dest,const char * Source,size_t _Count)` (2)头文 ...
- C语言学习之我见-memchr()内存查找字符函数
memchr()内存查找字符函数:主要用于从内存中查找自己需要的字符位置. (1)函数原型: void *memchr(const void *_Buf ,int _Val,size_t _MaxCo ...
- C语言学习之我见-malloc和free内存申请及释放函数
malloc函数负责向计算机申请确定大小的内存空间. free函数负责释放malloc的申请空间. (1)函数原型 void free(void *_Memory); void * malloc(si ...
- C语言学习之我见-strncmp()字符串比较函数(控制范围)
strncmp()函数,用于范围内,两个字符串的比较,n表示最大比较范围. (1)函数原型 int strncmp(const char *_Str1,const char *_Str2,size_t ...
- C语言学习之我见-strcmp()字符串比较函数
strcmp()函数,用于两个字符串的比较. (1)函数原型 int strcmp(const char *_Str1,const char *_Str2); (2)头文件 string.h (3)功 ...
- Go语言学习之3 流程控制、函数
主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...
随机推荐
- OllyDbg---call和ret指令
call和ret call指令 cal指令是转移到指定的子程序处,后面紧跟的操作数就是给定的地址. 例如,call 401362表示转移到地址401362处,调用401362处的子程序,当子程序调用完 ...
- Blazor Bootstrap 组件库语音组件介绍
Speech 语音识别与合成 通过麦克风语音采集转换为文字(STT),或者通过文字通过语音朗读出来(TTS) 本组件依赖于 BootstrapBlazor.AzureSpeech,使用本组件时需要引用 ...
- js实时监听dom尺寸变化
开发过程中总会遇到dom节点尺寸变化,去做一些相应的逻辑,第一想到的应该是用$(window).resize()去做,但是这个是监听浏览器窗口的所以这个时候要用 ResizeObserver Resi ...
- partTwo自动出题程序第一阶段
课堂测试1:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 "软件" 代码实现 import java.util.Random;//import java.uti ...
- switch 和 if else if else 有什么区别
1. 一般情况下,它们两个语句可以相互替换 2. switch..case语句通常处理case为比较确定值的情况,而if...else...语句更加灵活,常用于范围判断(大于.等于某个范围) 3. ...
- delaycall.js 修改表单延迟自动提交的 jQuery / Zepto 插件
delaycall.js delaycall 是一个 jQuery / Zepto 插件,用于在用户完成某项操作后,延迟指定秒数后自动调动指定函数.如用户输入完内容后,延迟1秒,自动提交表单. Git ...
- CentOS下Apache Doris Oracle ODBC外表使用指南
1.软件环境 操作系统:CentOS 7.8 Apache Doris :0.15 Postgresql数据库:oracle 19c UnixODBC:2.3.1 Oracle ODBC :insta ...
- 交换机做节点的vlan划分
基础准备 准备一台个人pc,两台物理服务器和一台三层交换机,以及网线若干. ip地址规划如下: 主机名 IP 控制节点 192.168.100.0 计算节点 192.168.200.0 个人pc 19 ...
- 安装与基本配置DHCP服务器
一,安装DHCP服务器角色 1,打开[开始]→[管理工具]→[服务器管理器]→"仪表板"选项的[添加角色和功能],持续单机[下一步]按钮, 直至出现下图所示的"选择服务器 ...
- OAuth 2.1 框架
OAuth 2.1 Draft 当前版本:v2-1-05 失效时间:2022/09/08 本文对部分原文翻译,同时加了一些笔记,以便理解. 单词 译意 identifiler 识别码 Resource ...