首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++:strcat()是否会覆盖或移动null?

C++中的strcat()函数不会覆盖或移动nullstrcat()是一个字符串拼接函数,它用于将两个字符串连接起来,生成一个新的字符串。这个函数不会对null进行任何操作,也不会在遇到null时停止。

strcat()函数中,两个字符串被指定为参数,函数会按照指定的方式拼接这两个字符串。如果其中一个字符串包含null,而另一个字符串不包含null,那么null不会被拼接进结果中。

例如:

代码语言:txt
复制
const char* str1 = "Hello, ";
const char* str2 = "world!";
const char* null_str = nullptr;

strcat(str1, str2); // 拼接不会影响null
strcat(str1, null_str); // 拼接不会影响null

在上面的例子中,str1str2都不包含null,所以null不会被拼接进结果中。如果其中一个字符串包含null,而另一个字符串不包含null,那么null仍然不会被拼接进结果中。

总之,strcat()函数不会覆盖或移动null,它只会将两个字符串按照指定的方式拼接起来。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ <cstring>字符串库函数的自定义实现

结论:C语言风格字符串使用麻烦,需要自己分配空间,就连最简单的字串连接操作还要担心是否越界,而string类只要用“加法+”就行了。...后者字符串操作函数比较丰富,且使用方便:strlen(s) s.length() s.size()、strcat(s1,s2) s1.append(s2) 、strncpy(s1,s2...std::basic_string属于C++ STL容器类,用户自定义的类也可以作为它的模板参数,因此也适用C++ STL Algorithm库。...strcat会用s2的第一个字符覆盖s1的空字符,并在拼接字符串的后边添加空字符。strncat与strcat功能相同,只是限制了从s2中取出拼接到s1的字符个数。...strerror当输入存储在errno的错误码时,返回一个指向描述这种错误的字符串的指针。

1.1K40

小白学习C语言之字符串操作总结大全

在 C 语言中,字符串实际上是使用null字符 '' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 "Hello" 字符串。...字符串拷贝 可以使用strcpy函数,代码如下: 注意:1. str1 覆盖 str2 内容;2. 定义数组是,str2 长度要大于等于 str1。...字符串连接 可以使用 strcat 函数,代码如下: 注意:要注意 str2 的长度为 str1 与原 str2 长度之和,str2 最后的 '' 字符自动消失。...3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,让你手足无措。...最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。

93920

【C字符串函数】字符串函数和内存操作函数模拟实现(进阶版)

字符串函数无论对于C++方向从业者意义重大(使用率高),而且对于求职面试更是一大重点(笔试常被问到模拟实现) 文章目录 0.说在前面的话: 1.求字符串长度 1-1strlen求串长 2.长度不受限的字符串函数...5.错误信息报告 5-1strerror打印错误信息 6.字符操作 6-1字符分类函数(判断) & 6-2字符转换(转换) 7.内存操作函数 7-1memcpy(内存拷贝) 7-2memmove(内存移动...my_strcpy(char* dest, const char* src) { assert(dest&&src); char* ret = dest;//ret保存dest的初始位置(后面dest移动.../自己给自己追加 原因:在找到dest的‘\0’后,进行src的的一个字符的拷贝时将dest(其实也是src)的’\0’覆盖掉,追加将无法停下来 模拟实现: char* my_strcat(char*...dest, const char* src)//1.能否被修改决定了是否加const 2.const修饰更安全 { assert(dest&&src); char* ret = dest;

43530

头文件string的作用_cstring头文件的作用

当然,并非总是越大越好,但在如今的情况下,确实越大越好, 因为大的库包含许多的功用。标准库中的功用越多,开发自个的应用程序时能 凭仗的功用就越多。...因为标准库中东西如此 之多,你(象你相同的其他啥人)所选择的类名函数名就很有可以和标准 库中的某个名字相同。...(这种釜底抽薪的做法会让现有代码的程 序员说出比”廉耻” 更尖锐的话)慑于被激怒的程序员会发作的损坏 力,标准委员决定为包装了std 的那有些标准库构件创立新的头文件名。...( psz, psz );   strcat( psz, cstr );//合法   strcat( psz, str );//非法,由此可见,CString可自动转换为const char*,而string...  判断是否==NULL或者第一个字符是否是’\0’   empty   IsEmpty   m) 重定义大小   作用   char*   string   CString   重定义大小

4.6K10

字符串函数、字符函数、内存函数的使用及其模拟实现

= NULL); //检查str是否为空指针 int count = 0; while (*str !...(追加覆盖掉末尾的’\0’,导致死循环) strcmp 函数功能 字符串比较,以字节为单位比较两个字符串的大小 函数参数 int strcmp ( const char * str1, const char...memmove 函数功能 内存移动,将一块内存数据中的内容移动覆盖至另一块内存数据,常用来处理重叠内存数据的拷贝。...,其实这种覆盖分为两种情况: (1):dest的地址大于src的地址 如图,如果这时我们从前往后移动的话,那么4就会覆盖掉6,从而导致将6赋给8变成4赋给8,所以我们应该从后往前移。...(2):dest的地址小于src的地址 如果这时我们从后往前移动的话,那么7就会覆盖掉5,导致将5赋给2的时候变成7赋给2,所以这里我们应该从前往后移动

1.8K00

C++ MiniZip实现目录压缩与解压

parentdirName) { bool bRet = false; /* APPEND_STATUS_CREATE 创建追加 APPEND_STATUS_CREATEAFTER 创建后追加(覆盖方式...ZIP 文件打开: 根据目标 ZIP 文件是否存在,使用 zipOpen 函数打开 ZIP 文件。...ZIP 递归解压目录 在这个C++程序中,实现了递归解压缩ZIP文件的功能。程序提供了以下主要功能: replace_all 函数: 用于替换字符串中的指定子串。...该函数打开 ZIP 文件,获取文件信息,然后逐个解析和处理 ZIP 文件中的文件目录。...该函数打开 ZIP 文件,获取文件信息,然后逐个解析和处理 ZIP 文件中的文件目录。在解析过程中,根据文件目录的属性,创建相应的目录结构,然后将文件写入目标路径。

53410

PDF文件攻击

查看配置是否正确 show options ? 6. 开启监听 run ? 三、肉鸡上线 在目标打开PDF文件时,产生卡壳无法正常打开,当软件关闭,meterpreter也将会断开。...在0x0803DBA1调用了strcat函数,strcat函数原型如下: char *strcat(char *dest, const char *src); strcat会将参数src字符串复制到参数...dest所指的字符串尾部,dest最后的结束字符NULL会被覆盖掉,并在连接后的字符串尾部再增加一个NULL。...漏洞成因就是没有去验证src的长度是否可能超出dest数组定义的长度。如果我们有可能超出dest数组定义的长度的数据放入src中有可能在后方调用strcat函数时覆盖栈区从而实现代码执行。...所以平时要小心陌生的文件,在打开前要明确来源,使用杀毒软件进行杀毒。尽量保证电脑的软件处于最新版本,这样才能最大程度较低被攻击的概率。

2.3K30

C++字符串处理函数

C++字符串处理函数 C语言和C++提供了一些字符串函数,使得用户能很方便地对字符串进行处理。这些是放在函数库中的,在string和string.h 头文件中定义。...如果读者要使用这些字符串函数,应该用#include命令把string.hstring头文件包含到本文件中。...C++字符串连接函数strcat 函数原型为: strcat(char [],const char[]); strcat函数是有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面...C++字符串复制函数strcpy 函数原型为: strcpy(char [],const char[]); strcpy函数的作用是将第二个字符数组中的字符串复制到第一个 字符数组中去,将第一个字符数组中的相应字符覆盖...可以用strcpy函数将一个字符串中前若干个字符复制到字符数组中去 只能通过调用strcpy函数来实现将一个字符串赋给一个字符数组,而不能用赋值语句将一个字符串常量字符数组直接赋给一个字符数组。

5742220

零基础入门C语言超详细的字符串详解

如果src和dest出现重叠, 函数自动处理. 返回dest的值.   ...源串strSource的字符覆盖目标串strDestination后面的结束符NULL. 在字符串的复制添加过程中没有溢出检查, 所以要保证目标串空间足够大. 不能处理源串与目标串重叠的情况....源串strSource的字符覆盖目标串strDestination后面的结束符NULL. 如果count大于源串长度, 则会用源串的长度值替换count值....得到的新串后面会自动加上NULL结束符. 与strcat函数一样, 本函数不能处理源串与目标串重叠的情况. 函数返回strDestination值.   ...如果count值小于等于strSource串的长度, 不会自动添加NULL结束符目标串中, 而count大于strSource串的长度时, 则将strSource用NULL结束符填充补齐count个字符

98420

CC++语言字符串操作总结大全(超详细)

参考链接: C++ iscntrl() 字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat...源串strSource的字符覆盖目标串strDestination后面的结束符NULL. 在字符串的复制添加过程中没有溢出检查, 所以要保证目标串空间足够大. 不能处理源串与目标串重叠的情况. ...源串strSource的字符覆盖目标串strDestination后面的结束符NULL. 如果count大于源串长度, 则会用源串的长度值替换count值....得到的新串后面会自动加上NULL结束符. 与strcat函数一样, 本函数不能处理源串与目标串重叠的情况. 函数返回strDestination值.   ...如果count值小于等于strSource串的长度, 不会自动添加NULL结束符目标串中, 而count大于strSource串的长度时, 则将strSource用NULL结束符填充补齐count个字符

82720

【C】字符串函数——大全(简洁,精炼,初学者)

使用场景: 特性: 追加字符串时,源字符串必须有\0 覆盖待追加代码的\0(从第一个\0处开始追加) 1.模拟实现strcat 比模拟实现strcpy多了一步:设置cur...指针,重新找拼接的头指针(覆盖掉源代码的\0) 2....NO 分析: stract的特性之一就是覆盖待追加代码的"\0" 五.strcmp(字符比较函数) 注意点: 比较对应位置上字符的Ascall值的大小 一定要有‘\0’,即终止符号...运用场景: 十.strstr(在一个字符串中查找另一个字符串是否存在) 返回值的情况: 存在:返回子串第一次出现的位置 不存在: 返回NULL 使用场景: 1.模拟实现strstr...NULL即可控制循环) 使用要点: 存储分割符的字符串p,分割一次后会自动跳到下一个字符 strtok有记忆功能,记住他改变的地址 第一次如果传回非空,则第二次一定要传回NULL!!!!!!!!!!!

16610

手把手教你玩转常用字符串函数(包含模拟实现)

一、strlen 1.认识strlen 关于函数定义的图片,本文均取自cplusplus.com - The C++ Resources Network 从函数的返回类型可以看出strlen返回的值是一个无符号整型...1.认识strcat strcat是用来拼接字符串的,它会将参数source字符串复制到参数destination所指的字符串尾部,函数返回类型为char*,两个参数一个是char*,一个是const...,还是老样子,被拼接字符串要够长,不然越界。...str1;//储存开始时的地址,因为str1再遍历时被改变 while (*str1)//当*str1为'\0'时找到关键地址 { str1++; } while (*str2) {...ch2++; if (*ch2 == '\0')//因为被查找目标已经遍历完,因此中止循环 { return str1; } } str1++; } return NULL

8610
领券