C/C++混淆点-strcat和strcpy区别
一、原因分析
假设: char * str=NULL; str=new char[11];你想为字符串str开辟一个存储十个字符的内存空间,然后你现在有两个字符串:char * c1="abc"和char * c2="123";你想将这两个字符串都拼接在str字符串中,你想用strcat这个函数。但是你直接用strcat编译器会报错!!!不能这样做,应该在拼接之前使用memset(字符串指针,0,想要设置的个数)函数对新开辟的内存空间进行清空,也是用0来代替。如果不这样的话,万一新开辟的内存空间有其它值的话,strcat就不是从第一个位置开始拼接。对应本例的情况,应该在使用strcat之前调用memset(str,0,7);用7是有效字符个数为6,还有一个隐藏字符'\0'。
当然,还有一个方法,那就是先使用strcpy(str,c1),再使用strcat(str,c2)。为什么呢?因为strcpy把c1拷贝至str的内存空间的时候是从第一位开始拷贝的,再用strcat拼接拷贝后的字符串就可以了。
二、msmset()函数介绍
memset函数详细说明:void *memset(void *s,int c,size_t n)
总的作用:将已开辟内存空间s的首n个字节的值设为值c。也就是将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,当然int c也可以换成字符,n就是你想要设置的个数。
三、常见用途
memset() 函数常用于内存空间初始化。如:char str[10]; memset(str,0,10);我们本次说遇到的问题就是通过memset来解决的。其实就相当于内存清空。
一般为char str[10]={0}; 进行初始化
C/C++混淆点-strcat和strcpy区别相关推荐
- C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp
相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...
- C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现
相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...
- C语言字符串函数strcat,strcpy详解
目录 一.CSDN解释: 1.strcat: 2.strcpy 二.strcat和strcpy 参数的理解 三.注意事项和使用 1.strcat注意事项: 2.代码: 3.补充思考: 4.strcpy ...
- 转:strcat与strcpy与strcmp与strlen
转自:http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型:extern char *strcat(char *dest,cha ...
- C语言中字符串常用函数--strcat,strcpy
strcpy 原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src ...
- [C++基础]032_常用的字符串处理函数(strcat,strcpy,strcmp,strupr,strlwr,strlen)...
1. strcat--字符串连接 1 #include <iostream> 2 using namespace std; 3 4 int main(){ 5 6 char str[15] ...
- c语言字符串未初始化strcat,C语言中字符串常用函数strcat与strcpy的用法介绍
strcpy原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include 功能:把从src地址开始且含有NULL结束符的字符串 ...
- 自定义字符串函数:strlen,strcat,strcpy,strcmp
版权声明:本文为博主原创文章,未经博主允许不得转载. 计算字符串长度函数strlen: int mystrlen(char *s) {int count = 0;char *p = s;if (!p) ...
- strcat、strcpy、strcmp三种函数用法
1. strcat函数 其一般形式为:strcat(字符数组1,字符数组2) strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数 ...
最新文章
- 实战Gradle——第一部分 Gradle介绍
- c#书写规范之---注释
- fsocketopen域名解析错误
- wordpress中安装插件需要ftp服务怎么破
- 读债务危机0804:美国债务危机与调整(2007到2011)-泡沫出现
- jackson驼峰转下划线注解_jackson序列化与反序列化的应用实践
- 舍弃Python,为什么知乎选用Go重构推荐系统?
- 太惨了,今年没年终奖了!
- Spark中RDD与DataFrame与DataSet的区别与联系
- .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心
- eval()函数和zip()函数用法、enumerate()
- LAMP源码安装原理
- 死亡细胞Mod制作教程
- 空间频率 MTF和 SFR
- ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
- 表单提交中文时出现乱码的问题
- FRP分享 Padavan
- 如何用windows7搭建radius服务器
- 用户使用报告_分享最新2020年抖音用户画像报告
- 永恒之蓝 ms17_010漏洞
热门文章
- Java IO流之PrintStream分析
- Windows之node.js安装
- linux自动重新启动,linux 系统自动重新启动,请帮忙看看
- flutter不支持热更新_Flutter 在安卓上可以实现热更新了
- 网站服务器怎么用手机登录不了怎么办,怎么打不开服务器列表了?
- vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗
- 全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过
- 文件读取 linux_Linux 进程、线程、文件描述符的底层原理
- 初中学历在辽宁学计算机,在辽宁省实验中学学习是怎样一番体验?
- android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2