免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2621 | 回复: 7
打印 上一主题 下一主题

【C新手的简单问题】*ptr = '\0' [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-19 13:47 |只看该作者 |倒序浏览
今天看代码,看到这么几行:

while (fgets(buf, sizeof(buf)-1, fp))
        {
                if (buf[0] != '[' || !(ptr = strchr(buf, ']')))
                        continue;

                str = buf + 1;
                *ptr = '\0';
                if (ptr == str || (ptr-str) > 15)
                        continue;
               。。。。。。。。。。。。。。。。。。。。。。
               。。。。。。。。。。。。。。。。。。。。。。


ptr-str  这个用法是不是有问题啊, 小自己写了几行:


30     unsigned char * ptr;
31
32     *ptr = '\0';
33
34
35     printf("*ptr is: %d\n", ptr);



结果:

[occa]:/build/pgsql/cfile--> ./a.out
Segmentation Fault (core dumped)


谢谢各位老大

论坛徽章:
0
2 [报告]
发表于 2008-07-19 13:50 |只看该作者
ptr-str  没有问题,是求两个指针之间的距离长度。
至于你后面这个问题,是没有分配空间,你需要再看看关于malloc方面的东西。

论坛徽章:
0
3 [报告]
发表于 2008-07-19 13:51 |只看该作者
我是到这一步:                 *ptr = '\0';  

就死掉了,

论坛徽章:
0
4 [报告]
发表于 2008-07-19 13:54 |只看该作者
明白了,谢谢大侠。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2008-07-19 13:55 |只看该作者
原帖由 ballbb 于 2008-7-19 13:51 发表
我是到这一步:                 *ptr = '\0';  

就死掉了,



你的指针在那里声明的,又在那里进行初始化了。
如果你这样用,肯定会报错的:
char *ptr;
*ptr = '\0'

论坛徽章:
0
6 [报告]
发表于 2008-07-19 14:00 |只看该作者
原帖由 ballbb 于 2008-7-19 13:51 发表
我是到这一步:                 *ptr = '\0';  

就死掉了,

对啊,你的ptr没有分配空间,当然段错误了。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2008-07-19 14:44 |只看该作者

回复 #1 ballbb 的帖子

这个问题只要分清 ptr 和 *ptr 的区别就不会迷惑了

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2008-07-19 15:40 |只看该作者
推荐LZ好好看一下《C和指针》
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP