strcpy和strncpy区别
来源:互联网 发布:电子商务美工是什么 编辑:程序博客网 时间:2024/05/17 04:28
第一种情况:
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!
strcpy(),以源串中的'\0'为拷贝结束标志,直到遇到该NULL为止,然后将NULL拷贝上.
strncpy()以第三个参数N为拷贝结束标志,如果source的长度小于N,则剩余的字符全部用NULL填充.
如果source的长度大于N,则从source中截取前N个字符,拷贝过去.
- strcpy和strncpy区别
- strcpy和strncpy区别
- strcpy和strncpy区别
- strcpy和strncpy区别
- strcpy和strncpy区别
- strcpy和strncpy区别
- Strcpy和Strncpy的区别
- Strcpy和Strncpy的区别-
- Strcpy和Strncpy的区别
- Strcpy和Strncpy的区别
- strcpy 和 strncpy的区别
- strcpy和strncpy的区别
- strcpy()和strncpy()的区别
- strcpy和strncpy的区别
- Strcpy和Strncpy的区别
- strcpy和strncpy的区别
- strcpy和strncpy的区别
- strcpy和strncpy用法和区别
- MFC各种数据类型
- 一些函数
- 一道字符串复制的面试题目
- 一个函数PlaySound
- 宽字符处理函数函数与普通函数对照表
- strcpy和strncpy区别
- WINDOWS语音编程初步--(转自iwaswzq)
- 如何实现进程间的通信
- Oracle sql 性能优化调整
- 利用多线程技术实现线程之间的通信(转)
- WinCE的一些忠告——UNICODE编码
- vc数据类型转换大全
- 关于VC数据类型及操作
- 文件树式页面内容组织版式