博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言字符串拷贝strcpy函数的陷阱分析
阅读量:7082 次
发布时间:2019-06-28

本文共 1118 字,大约阅读时间需要 3 分钟。

在C语言中,我们都知道字符串是永恒的话题,字符串含有很多地雷,你稍不留心就会被砸到,比方说,字符串的结尾是'\0',也是占一个字符空间的,那么如果我们在利用strcpy拷贝字符串的时候,应该多加1个字符空间,就是专门留给这个'\0'的。

如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。

-------------我是分割线------------------

# include 
# include 
# include 
int main(){    char str[] = "MengLiang";    //此处分配空间没有考虑到'\0'    char* New_str = (char*)malloc(strlen(str));        strcpy(New_str, str);        printf("The New_str = %s\n", New_str);     free(New_str);    New_str = NULL;        system("pause");    return 0;}

-------------我是分割线------------------

我在注释中已经写了,那么这小段程序的结果呢?

wKiom1OIV9vBv7tWAAGLht1kjGw155.jpg

-------------我是分割线------------------

正确的修改为:

-------------我是分割线------------------

# include 
# include 
# include 
int main(){    char str[] = "MengLiang";    //此处的加1就是为'\0'来服务的    char* New_str = (char*)malloc(strlen(str)+1);        strcpy(New_str, str);        printf("The New_str = %s\n", New_str);     free(New_str);    New_str = NULL;        system("pause");    return 0;}

-------------我是分割线------------------

C语言的自由意味着我们要自制!

----------------------------------------------

转载地址:http://beoml.baihongyu.com/

你可能感兴趣的文章
JavaScript学习笔记第三天_对象
查看>>
C++17标准制定完成
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
OpenAI发布大型强化深度学习模拟器Neural MMO,AI适者生存择最优
查看>>
入门解读:小白也能看懂的容器和虚拟机介绍
查看>>
企业级区块链现状研究报告:小企业的投资总额是大企业的28倍
查看>>
php解析带有命名空间的xml
查看>>
在首次发布三周之后,MLflow迎来了0.2版本
查看>>
微软发布面向企业区块链网络的Coco Framework
查看>>
.NET Core中的去虚
查看>>
前端大神用React刻了一个Windows XP
查看>>
10种避免大型部署的方法
查看>>
Yelp的实时流技术之二:将MySQL表数据变更实时流到Kafka中
查看>>
数据不可变之linked-in/rocketdata
查看>>
Java 10新特性前瞻
查看>>
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
通过DevOps考古学了解生产环境
查看>>
nginx lua指令执行顺序
查看>>
新书问答:Agile Management
查看>>
精益企业中架构师的角色
查看>>