第一种情况:
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!

最新文章

  1. 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】
  2. Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au
  3. 动易CMS之标签管理
  4. DirectX基础学习系列2
  5. 网站后台的lnmp启动与重启
  6. IIS本地服务器,设置IP地址问题
  7. shell 的判断与比较
  8. JAVA 操作 DBF 文件数据库
  9. 马的遍历 洛谷 p1443
  10. android viewpager切换到最后一页时,跳转至其他activity
  11. javascript学习笔记(四) Number 数字类型
  12. SQLServer学习记录
  13. SQL 必知必会&#183;笔记&lt;12&gt;组合查询
  14. 线程的同步(协调)synchronized
  15. RBAC: 基于角色的访问控制(Role-Based Access Control)
  16. Ps操作技巧(快捷键大全)
  17. 安装 Git
  18. Ubuntu16.04中安装stlink驱动
  19. 2.Border Layout 自定义一个Layout来完成布局。
  20. 中值滤波C语言优化

热门文章

  1. ProtoBuf练习(四)
  2. The Little Prince
  3. (PHP)redis Hash(哈希)操作
  4. 2017-10-19 NOIP模拟赛
  5. 2017-10-18 NOIP模拟赛
  6. 安装篇:MySQL系列之一
  7. PAT天梯赛L2-025 分而治之
  8. ELK系列(2) - Kibana怎么修改日期格式Date format
  9. Jmeter report优化
  10. rabbitMq创建和获取消息