c strncpy 容易出错的地方
2024-09-06 14:08:08
使用strncpy的是注意两点,目的是数组和目的是指针
.目的是数组:
char dest[N+] = "abcde"; //
char src[N+] = "";
strncpy(dest,src,N);
dest[N] ='\0'; 当strlen(src)<strlen(dest) //会直接把src中的全部内容拷贝过去
当strlen(src) >= strlen(dest) //src中会有一个数据拷贝遗漏 .目的是指针:就不能用siezof
char de[N+]="abcde";
char *dest = de;
char *src = "";
if(strlen(dest) >strlen(src)){ //不会造成数据丢失
memset(dest,,N+);
strncpy(dest,src,strlen(src));
}
else
{//数据最后一个丢失
strncpy(dest,src,N);// strncpy(dest,src,strlen(dest)); 有宏的最好写成分配dest空间的宏,否则用strlen有问题,如果是申请空间后赋值过,就没有问题了。
dest[N] = '\0'; // dest[strlen(dest)] = '\0'; } 上面的写法都是保守的写法,如果dest的内容太大,考虑性能,则可以进一步优化。
最新文章
- 高效快捷实用移动开单手持扫描打印一体智能 POS PDA
- 团队项目——站立会议DAY10
- Magento中,调用静态块的几种方法
- struts.properties的参数描述
- PHP 201307 月最新手册chm 免费下载
- Java中ArrayList源码分析
- 随学随用的python-note
- sql发邮件
- 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享
- React Native 轻松集成统计功能(Android 篇)
- 智能化脚本autoit v3的简单了解
- Confluence 6 数据库表-授权(Authentication)
- Linux下搭建ftp服务
- treap学习笔记
- django的权限认证:登录和退出。auth模块和@login_required装饰器
- 【SDN】SDN相关资料--了解一下电信领域的SDN
- ASP代码审计学习笔记 -3.上传漏洞
- OAuth认证与授权
- free命令buff和cache的区别
- 万里长征第二步——django个人博客(第七步 ——上传文件)