免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: julynada
打印 上一主题 下一主题

[C] C风格字符串,都必须先memset为0才能用吗?为啥? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
21 [报告]
发表于 2010-11-13 16:58 |只看该作者

论坛徽章:
0
22 [报告]
发表于 2010-11-15 15:10 |只看该作者
推荐使用memset,
等你碰到没有使用 memset 造成bug,而被骂的时候,就知道memset 的好处了。

论坛徽章:
0
23 [报告]
发表于 2010-11-15 15:40 |只看该作者
等你遇到问题的时候再来看看是不是没有memset 不然没有影响

论坛徽章:
0
24 [报告]
发表于 2010-11-16 16:09 |只看该作者
推荐写法,并且这种写法比较多而已

论坛徽章:
0
25 [报告]
发表于 2010-11-16 16:11 |只看该作者
例如,有数组
char username[100];
memcpy(username,"123456789",strlen("123456789");//123456789表示用 ...
lsupper 发表于 2010-11-11 16:19


说实话,我没看懂为什么第二次存就是错的。

能给解释下么? 谢谢了

论坛徽章:
0
26 [报告]
发表于 2010-11-16 16:46 |只看该作者
回复 25# 程序c


    第二次的时候buffer里面的数据时123456789,现在你不清理buffer,直接往里面写入少于第一次写入长度的数据(111),那么buffer里面的数据就是111456789...你如果往数据库存的时候,长度取的是strlen,那么你存进去的就是111456789(实际你想存111)

论坛徽章:
0
27 [报告]
发表于 2010-11-16 22:10 |只看该作者

论坛徽章:
0
28 [报告]
发表于 2010-11-17 08:05 |只看该作者
先作为左值就没有问题

论坛徽章:
0
29 [报告]
发表于 2010-11-17 08:06 |只看该作者
你可以试着再问一下为什么要清零?不是清ff

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
30 [报告]
发表于 2010-11-17 08:15 |只看该作者
推荐运行程序之前先重启电脑(memset(0,0,0)),
运行之后立马关机(free(p); p=NULL)

这样你的程序就不会出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP