免费注册 查看新帖 |

Chinaunix

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

不理解的strlen [复制链接]

论坛徽章:
0
41 [报告]
发表于 2006-03-25 01:21 |只看该作者
原帖由 towerjt 于 2006-3-24 13:45 发表

你认为memset不用资源吗?flw是负责


呵呵,我说的是 楼主的问题 而后来的帖子谈论的是另外一件事了,也就是说跑题了呵呵,当然也不是没有关系,实际上是把楼主的提问给扩大了来讨论的

并且这题跑的很有价值,看贴的人一般能学到些东西,我说的话与技术无关,纯粹就贴论贴。没有对版主的一点不敬的意思,虽然c版我来的少,但flw我还是很佩服滴

论坛徽章:
0
42 [报告]
发表于 2006-03-25 12:20 |只看该作者
我经常这样
char a[20];
a[0] = 0;

论坛徽章:
0
43 [报告]
发表于 2006-03-26 13:48 |只看该作者
good!

论坛徽章:
0
44 [报告]
发表于 2006-03-26 19:08 |只看该作者
要不就改为static int a[17] 吧

论坛徽章:
0
45 [报告]
发表于 2006-03-26 20:10 |只看该作者
原帖由 is01zyf 于 2006-3-25 12:20 发表
我经常这样
char a[20];
a[0] = 0;


这样可能还是会有问题,我记得在SUN上定义了一个字符数组,然后sprintf,结果有问题;
所以后来,sprintf前使用memset一下。

[ 本帖最后由 hkwang66 于 2006-3-26 20:12 编辑 ]

论坛徽章:
0
46 [报告]
发表于 2006-03-26 20:25 |只看该作者
原帖由 tinywind 于 2006-3-21 11:21 发表
没有core dump已经算你走运了

这段代码是不会引起core dump

论坛徽章:
0
47 [报告]
发表于 2006-03-26 20:47 |只看该作者
原帖由 hkwang66 于 2006-3-26 20:10 发表


这样可能还是会有问题,我记得在SUN上定义了一个字符数组,然后sprintf,结果有问题;
所以后来,sprintf前使用memset一下。

它的代码是怎么样的,贴出来看看

论坛徽章:
0
48 [报告]
发表于 2006-03-26 21:01 |只看该作者
我当时是这样实现的:
#define MAXCMDLEN 512
......
char strCmd[MAXCMDLEN];
sprintf(strCmd,"echo \"unload to countrycode.unl select countrycode from country\" |dbaccess mydb");
printf("strCmd is :%s\n",strCmd);

if(-1 ==system(strCmd))
{
    printf("Execute cmd error!\n");
    return -1;  
}

.............
我发现执行老是有问题,后来在sprintf后面把strCmd打印出来发现是乱码;所以
我就在sprintf前加了:memset(strCmd,0,sizeof(strCmd));
就可以执行成功,并且打印出strCmd也是预期的。

[ 本帖最后由 hkwang66 于 2006-3-27 01:10 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP