[VC]strcpy和strncoy的区别
第一种情况:
char* p="how are you ?";
char name[20]="ABCDEFGHIJKLMNOPQRS";
strcpy(name,p); //name改变为"how are you ? OPQRS " ====>错误!
strncpy(name,p,sizeof(name)) //name改变为"how are you ? " ====>正确!
第二种情况:
char* p="how are you ?";
char name[20];
strcpy(name,p); //name改变为"how are you ? 未知字符 " ====>错误!
name[sizeof(name)-1]='"0' //和上一步组合,得到正确的结果!
strncpy(name,p,sizeof(name)); //name改变为"how are you ? " ====>正确!
第三种情况:
char* p="how are you ?";
char name[10];
strcpy(name,p); //name改变为"how are yo" ====>无结束符'"0',错误!
name[sizeof(name)-1]='"0' //和上一步组合,弥补结果。但要注意,字符传递错误!
strncpy(name,p,sizeof(name)); //和单纯的一步strcpy结果一样!
总结:strcpy
如果源长>目标长,则将源长中等于目标长的字符拷贝到目标字符串
如果源长<目标长,则源长全部拷贝到目标字符串,不包括'"0'
strncpy
如果目标长>指定长>源长,则将源长全部拷贝到目标长,自动加上'"0'
如果指定长<源长,则将源长中按指定长度拷贝到目标字符串,不包括'"0'
如果指定长>目标长,error happen!
最新文章
- 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】
- Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au
- 动易CMS之标签管理
- DirectX基础学习系列2
- 网站后台的lnmp启动与重启
- IIS本地服务器,设置IP地址问题
- shell 的判断与比较
- JAVA 操作 DBF 文件数据库
- 马的遍历 洛谷 p1443
- android viewpager切换到最后一页时,跳转至其他activity
- javascript学习笔记(四) Number 数字类型
- SQLServer学习记录
- SQL 必知必会&#183;笔记<;12>;组合查询
- 线程的同步(协调)synchronized
- RBAC: 基于角色的访问控制(Role-Based Access Control)
- Ps操作技巧(快捷键大全)
- 安装 Git
- Ubuntu16.04中安装stlink驱动
- 2.Border Layout 自定义一个Layout来完成布局。
- 中值滤波C语言优化