设为首页 加入收藏

TOP

C语言字符串拷贝strcpy函数的陷阱分析
2014-11-23 23:16:51 来源: 作者: 【 】 浏览:8
Tags:语言 字符串 拷贝 strcpy 函数 陷阱 分析

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


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


C语言梳理一下,分布在以下10个章节中:


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


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


}



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



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


C语言字符串拷贝strcpy函数的陷阱分析


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


正确的修改为:


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


# 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语言的自由意味着我们要自制!


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇利用C++对象确定性析构的原则来解.. 下一篇C++对象数组的实例学习

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: