首页
学习
活动
专区
工具
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.2K40

小白学习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高手的必由之路。

1.1K20
  • C语言(字符、字符串函数)1

    isalnum 检查一个字符是否是字母数字 (函数) isalpha 检查一个字符是否是字母 (函数) islower 检查一个字符是否是小写字母 (函数) isupper 检查一个字符是否是大写字母...= NULL); assert(sour != NULL); while (*sour !...4.3 strcpy 的返回值 关于 strcpy 函数我们可能忽略了它的返回值,因为我们觉得这个函数并不需要什么返回值,但其实它是有返回值的,既然有返回值,那它的返回值就有用,所以严格来说我们上面模拟实现的...= NULL); char* pd = dest; while (*dest++); dest--;//覆盖掉目标字符串中的\0 while (*dest++ = *sour++); return...可以看到,用我们自己写的函数不能实现字符串自己拼接到自己后面,这是因为拼接的过程是在目标字符串末尾的 ‘\0’ 处开始拼接的,也就是说目标字符串的第一个字符覆盖掉它自己末尾的 ‘\0’,那函数的第二个参数指针就永远也找不到

    7810

    【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;

    45730

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

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

    4.8K10

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

    = 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.9K00

    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 文件中的文件目录。在解析过程中,根据文件目录的属性,创建相应的目录结构,然后将文件写入目标路径。

    1.1K10

    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.5K30

    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函数来实现将一个字符串赋给一个字符数组,而不能用赋值语句将一个字符串常量字符数组直接赋给一个字符数组。

    5982220

    C语言(10)----字符函数和字符串函数

    头文件:ctype.h 常见的字符分类函数包括: 1. isalnum():检查字符是否是字母数字。 2. isalpha():检查字符是否是字母。...= NULL); char* ret = dest; while (*dest++ = *src++) { ; } return ret; } strcat函数 string concatenate...• ⽬标字符串中也得有‘\0’ ,追加从此处开始,并且覆盖目标字符串的‘\0’ • ⽬标空间必须⾜够⼤,以确保能存放源字符串 • ⽬标空间必须可修改。...0的情况 } strncpy、strncat、strncmp函数 一般来说,使用n形式函数更安全,因为它可以避免缓冲区溢出的问题。...; } strtok函数 string token的缩写----字符串标记 格式: char * strtok ( char * str, const char * sep); 作用:特别标记分隔符,

    14110

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

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

    1K20
    领券