strncat用在堆上的字符数组会有乱码?

路人甲cw 路人甲cw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

输出的字符串开头部分会有乱码,后面正常
int main()
{
const char *s1="abcd";
const char *s2="efgh";
char *cstr=new char[strlen(s1)+strlen(s2)+1];
//char cstr[strlen(s1)+strlen(s2)+1];
strncat(cstr,s1,strlen(s1));
strncat(cstr,s2,strlen(s2));
cout<<cstr<<endl;
delete [] cstr;
return 0;
}
用栈上的数组就正常
int main()
{
const char *s1="abcd";
const char *s2="efgh";
//char *cstr=new char[strlen(s1)+strlen(s2)+1];
char cstr[strlen(s1)+strlen(s2)+1];
strncat(cstr,s1,strlen(s1));
strncat(cstr,s2,strlen(s2));
cout<<cstr<<endl;
//delete [] cstr;
return 0;
}

换strcat也是一样,为什么?
...全文

相关推荐

C语言开发的工具库,包括常用的字符串解析、数据结构、日志库、异步IO线程等.zip

库中的字符串解析模块可能包含了诸如strtok用于分隔字符串,strtol或strtod用于将字符串转换为数值类型,以及strncat和strncpy用于安全的字符串拼接和复制等功能。

热爱嵌入式的小佳同学

C语言字符串字面量:strlen与sizeof的区别及内存存储解析

在C语言编程中,字符串处理是基础且关键的技术环节。字符串本质上是以空字符'\0'结尾的字符数组,这一存储原理决定了所有字符串操作的行为。理解字符串在内存中的布局,特别是其长度与占用空间的区别,是编写健壮代码的核心。字符串长度由strlen函数计算,返回'\0'前的字符数;而存储空间大小通过sizeof操作符获取,包含结尾的空字符。这一差异直接影响缓冲区分配和安全操作,是避免数组越界和内存溢出的技术基础。掌握字符串字面量的存储机制,能有效应用于初始化、函数传参和常量定义等场景,为深入学习字符串处理函数和动态内

weixin_33882452

JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requ

JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requirements

cdming

基于Matlab的自动睡眠粒状结构检测算法,从脑电信号中进行。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution

JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution Layer (RDL).pdf

Red Car
评论 12
收藏 已收藏
分享
返回顶部
路人甲cw
C++ 语言 65,214 成员 250,514 内容