标题:i++ 的逻辑不知道哪里误解了
取消只看楼主
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
结帖率:72.22%
 问题点数:0 回复次数:2 
i++ 的逻辑不知道哪里误解了
程序代码:
    char string[] = " Beware the Jabberwock, \nmy son!";
    int i = 0;
    while( string[i] != '\0')
        if(string[i] != '\n')
        putchar(string[i++]);

书上的例子,讲的是屏幕非格式化输出
在用这段代码,讲解putchar()函数

书中的输出为: Beware the Jabberwock, my son!

但实测试出为:Beware the Jabberwock,

个人理解:当数组中字符为“\n”时,if不执行,所以没有i++,返回到while(),

请问:1,返回之后程序结束了么,这时 \n != '0' 为真  >  执行if,为假 > 返回while() > ...
2,要如何像书中那样输出?应该递增i才对吧, 在if后直接写else i++; 输出了乱码

预谢!  


[此贴子已经被作者于2019-5-5 16:04编辑过]

搜索更多相关主题的帖子: i++ string the while 输出 
2019-05-05 15:40
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 2楼 word123
这个是我打错了,但是除此之外,要如何达到书中输出效果呢?
Beware the Jabberwock, my son!
直接写i++似乎不行啊,还要用个else if 判断么?

我试了下这个,输出正常,请问逻辑正确么?
else if(string[i-1] != '\0')
    i++;


[此贴子已经被作者于2019-5-5 16:10编辑过]

2019-05-05 16:04
bxe
Rank: 1
等 级:新手上路
帖 子:57
专家分:7
注 册:2019-3-21
得分:0 
回复 5楼 word123
谢谢,这下算是搞明白了!
2019-05-05 16:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494557-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.574000 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved