免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2010-11-11 17:15 |只看该作者
例如,有数组
char username[100];
strcpy(username,"123456789");//123456789表示用户名...要存到数据库里面
//-------存储到数据里面了...-----
save(username,strlen(username));

现在又有个用户要存到数据库里面:
strcpy(username,"111");
//-------存储到数据里面...-----
save(username,strlen(username));
//------????-----你想下现在存到数据库里面的是什么?------------是:111456789
lsupper 发表于 2010-11-11 16:19


看了这么多,我想说的是,strcpy会自动把'\0'补上去的。

论坛徽章:
0
12 [报告]
发表于 2010-11-11 17:38 |只看该作者
回复 10# hellioncu


    soryy,一时着急打快了...用memcpy复制....

论坛徽章:
0
13 [报告]
发表于 2010-11-11 17:39 |只看该作者
回复 10# hellioncu


    一时着急...忘了...应该是memcpy...

论坛徽章:
0
14 [报告]
发表于 2010-11-11 20:30 |只看该作者
本帖最后由 krein8964 于 2010-11-11 20:31 编辑
回复  krein8964


    strcat咋办?
julynada 发表于 2010-11-11 17:09



    strncat(dest, src, sizeof(dest) - 1 - strlen(dest));
    dest[sizeof(dest) - 1] = '\0';

论坛徽章:
0
15 [报告]
发表于 2010-11-12 12:34 |只看该作者
字符串操作,没啥好说的。

没有必须,一切行为自己负责。

论坛徽章:
0
16 [报告]
发表于 2010-11-12 13:38 |只看该作者
memset,初始化变量,根据自己情况初始化,通常是设置为0,你也可以设置成别的嘛,只要对你有意。

论坛徽章:
0
17 [报告]
发表于 2010-11-12 22:21 |只看该作者
初始化,实际上如果是字符串只需要这样初始化就可以了 str = "\0";  memset效率低。

论坛徽章:
0
18 [报告]
发表于 2010-11-13 09:07 |只看该作者
一般不这么做

论坛徽章:
0
19 [报告]
发表于 2010-11-13 15:37 |只看该作者
本帖最后由 krein8964 于 2010-11-13 15:50 编辑
字符串操作,没啥好说的。

没有必须,一切行为自己负责。
azfa123 发表于 2010-11-12 12:34



     工作中,很难做到自己的行为自己负责,通常是有人写程序溢出coredump了,领导就会让你去查问题。所以,别人拉屎你去擦屁股的情况更常见。如果是linux环境还好,溢出的函数返回就会coredump,如果是aix或其他没有栈溢出保护的系统,coredump指不定什么时候发生,而且栈常被破坏很彻底,调试器根本无法获的任何有用的信息。

论坛徽章:
0
20 [报告]
发表于 2010-11-13 16:49 |只看该作者
你memset清个字面量试试看……
别说字面量不算C风格字符串
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP