免费注册 查看新帖 |

Chinaunix

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

[C] 一个简单的问题不解,求教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-21 22:37 |只看该作者 |倒序浏览
目的: 把/aa/bb/cc/dd/file_name这种形式的字符串去掉结尾的file_name, 变为/aa/bb/cc/dd/的形式(要保留最后的/)
代码:
char    *full_path = "/aa/bb/cc/dd/file_name";
        char    path[100];
        char    *ch;

        strcpy(path, full_path);

        ch = strrchr(path, '/');

        *ch++ = '\0';

        printf("%s\n", path);

        exit(EXIT_SUCCESS);



但是,最后的输出是/aa/bb/cc/dd,但如果把其中的
    *ch++ = '\0';
改为:
    ch ++;
    *ch = '\0';
结果输出的就是/aa/bb/cc/dd/。
这两种表达方式有什么不同吗?
另:改为
*(ch++) = '\0';
结果与未加括号相同。
环境:
FreeBSD-7.0-i386-Release
gcc: gcc version 4.2.1 20070719  [FreeBSD]

[ 本帖最后由 guzhou 于 2008-5-22 09:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-05-21 22:43 |只看该作者
*ch++ = '\0';

==>  *ch = 0;
         ch++;

论坛徽章:
0
3 [报告]
发表于 2008-05-21 22:44 |只看该作者
指针先加后加的问题

论坛徽章:
0
4 [报告]
发表于 2008-05-22 09:06 |只看该作者
多谢两位。
我也想到过是指运算顺序的问题,但我改成
*(ch++) = '\0';
得到的结果是一样的,输出仍然是/aa/bb/cc/dd,没有“/”。

论坛徽章:
26
卯兔
日期:2014-12-02 13:53:28射手座
日期:2015-03-22 23:40:50午马
日期:2015-03-22 23:41:25寅虎
日期:2015-03-22 23:41:41亥猪
日期:2015-03-22 23:42:22戌狗
日期:2015-03-22 23:42:51酉鸡
日期:2015-03-22 23:43:29申猴
日期:2015-03-22 23:43:51未羊
日期:2015-03-22 23:44:15子鼠
日期:2015-03-22 23:45:11丑牛
日期:2015-03-22 23:45:32辰龙
日期:2015-03-22 23:45:53
5 [报告]
发表于 2008-05-22 09:28 |只看该作者
*ch++ 等价于*(ch++)

论坛徽章:
0
6 [报告]
发表于 2008-05-22 09:40 |只看该作者
记错了

[ 本帖最后由 ssafa 于 2008-5-22 09:42 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-05-22 09:55 |只看该作者
++ 和 取内容*的优先级别一样,而他们是右结合的, 所以*ch++ 和*(ch++)是一样的

论坛徽章:
0
8 [报告]
发表于 2008-05-22 10:00 |只看该作者
同意楼上

论坛徽章:
0
9 [报告]
发表于 2008-05-22 10:10 |只看该作者
额滴神啊,给每人发一本谭老师的书吧。
思而不学则那个啥

论坛徽章:
0
10 [报告]
发表于 2008-05-22 20:43 |只看该作者
原帖由 pinyin 于 2008-5-22 10:10 发表
额滴神啊,给每人发一本谭老师的书吧。
思而不学则那个啥

老兄也不用谁滴神了,仔细看看1楼的内容,我的问题不是*ch++与*(ch++)有何不同的问题。



原帖由 root@China 于 2008-5-22 09:28 发表
*ch++ 等价于*(ch++)

这个我明白,我的问题是:
为什么*ch++ = '\0'或者*(ch++) = '\0'的结果与
ch++;
*ch = '\0';
不一样?

[ 本帖最后由 guzhou 于 2008-5-22 20:47 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP