一、原因分析

假设: 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区别相关推荐

  1. C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  2. C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  3. C语言字符串函数strcat,strcpy详解

    目录 一.CSDN解释: 1.strcat: 2.strcpy 二.strcat和strcpy 参数的理解 三.注意事项和使用 1.strcat注意事项: 2.代码: 3.补充思考: 4.strcpy ...

  4. 转:strcat与strcpy与strcmp与strlen

    转自:http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型:extern char *strcat(char *dest,cha ...

  5. C语言中字符串常用函数--strcat,strcpy

    strcpy 原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src ...

  6. [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] ...

  7. c语言字符串未初始化strcat,C语言中字符串常用函数strcat与strcpy的用法介绍

    strcpy原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include 功能:把从src地址开始且含有NULL结束符的字符串 ...

  8. 自定义字符串函数:strlen,strcat,strcpy,strcmp

    版权声明:本文为博主原创文章,未经博主允许不得转载. 计算字符串长度函数strlen: int mystrlen(char *s) {int count = 0;char *p = s;if (!p) ...

  9. strcat、strcpy、strcmp三种函数用法

    1. strcat函数 其一般形式为:strcat(字符数组1,字符数组2) strcat的作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数 ...

最新文章

  1. 实战Gradle——第一部分 Gradle介绍
  2. c#书写规范之---注释
  3. fsocketopen域名解析错误
  4. wordpress中安装插件需要ftp服务怎么破
  5. 读债务危机0804:美国债务危机与调整(2007到2011)-泡沫出现
  6. jackson驼峰转下划线注解_jackson序列化与反序列化的应用实践
  7. 舍弃Python,为什么知乎选用Go重构推荐系统?
  8. 太惨了,今年没年终奖了!
  9. Spark中RDD与DataFrame与DataSet的区别与联系
  10. .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心
  11. eval()函数和zip()函数用法、enumerate()
  12. LAMP源码安装原理
  13. 死亡细胞Mod制作教程
  14. 空间频率 MTF和 SFR
  15. ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
  16. 表单提交中文时出现乱码的问题
  17. FRP分享 Padavan
  18. 如何用windows7搭建radius服务器
  19. 用户使用报告_分享最新2020年抖音用户画像报告
  20. 永恒之蓝 ms17_010漏洞

热门文章

  1. Java IO流之PrintStream分析
  2. Windows之node.js安装
  3. linux自动重新启动,linux 系统自动重新启动,请帮忙看看
  4. flutter不支持热更新_Flutter 在安卓上可以实现热更新了
  5. 网站服务器怎么用手机登录不了怎么办,怎么打不开服务器列表了?
  6. vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗
  7. 全栈工程师薪水_2020 Java 全栈工程师进阶路线图,不可错过
  8. 文件读取 linux_Linux 进程、线程、文件描述符的底层原理
  9. 初中学历在辽宁学计算机,在辽宁省实验中学学习是怎样一番体验?
  10. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2