标题:新手请教个printf问题
只看楼主
freecoco
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-9-16
结帖率:100%
已结贴  问题点数:20 回复次数:18 
新手请教个printf问题
最近学习K&R写的那本C语言程序设计,在练习题1-8中碰到了个pringt()函数问题,很是疑惑,请各位前辈们指教 指教!

这个是练习题中的源程序,在我这里不能正常显示!只能显示输入的字符没有计数统计显示!
程序代码:
#include <stdio.h>

main()

{
    int c, nb, nt, nl;

    nb = 0;
    nt = 0;
    nl = 0;

    while ((c = getchar()) != EOF){

        if (c == ' ')
            ++nb;
        if (c == '\t')
            ++nt;
        if (c == '\n')
            ++nl;

    }

    printf("%d %d %d\n", nb, nt, nl); /*  printf() 放在这里不显示nb, nt, nl
    
                                          只显示输入的字符*/
}


下面这是我把printf() 写到 while 后面的花括号内才能正常显示,但都是显示两行!
程序代码:
#include <stdio.h>

main()

{
    int c, nb, nt, nl;

    nb = 0;
    nt = 0;
    nl = 0;

    while ((c = getchar()) != EOF){

        if (c == ' ')
            ++nb;
        if (c == '\t')
            ++nt;
        if (c == '\n')
            ++nl;

    printf("%d %d %d\n", nb, nt, nl); /* printf() 放在这里显示nb, nt, nl 
    
                                        和输入字符都可以正常显示,只是有两行*/

    }

}


请前辈们帮忙解释一下好吗?感谢!
搜索更多相关主题的帖子: 练习题 C语言 源程序 统计 程序设计 
2015-09-16 14:28
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:10 
在我这里不能正常显示!只能显示输入的字符没有计数统计显示!

循环的判断条件

剑栈风樯各苦辛,别时冰雪到时春
2015-09-16 14:42
freecoco
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-9-16
得分:0 
感谢您的回复! 这个是统计空格,换行,还有制表符个数的.以下代码我做了详细注释
程序代码:
#include <stdio.h>

main()

{
    int c, nb, nt, nl;

    nb = 0;    /* nb , nt, nl 初始化为0 */
    nt = 0;
    nl = 0;

    /* while 判断输入字符是否有文件结束符 */
    while ((c = getchar()) != EOF){

        if (c == ' ')   /* 如果输入有空格*/
            ++nb;       /* nb 为空格+1操作*/
        if (c == '\t')  /* 如果输入有制表符*/
            ++nt;       /* nt 为制表符+1操作 */
        if (c == '\n')  /* 如果输入有换行符 */
            ++nl;       /* nl 为换行符 +1操作 */

    }

    printf("%d %d %d\n", nb, nt, nl); /*  printf() 放在这里不显示nb, nt, nl
    
                                          只显示输入的字符*/
}
2015-09-16 14:58
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
3楼代码  没啥问题呀

  duy h ydd78923981  iykh27
^G
^Z
6 0 2

DO IT YOURSELF !
2015-09-16 15:03
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 4楼 wp231957
没有说有什么问题啊,我只是说条件不满足跳不出循环看不到结果了

剑栈风樯各苦辛,别时冰雪到时春
2015-09-16 15:04
freecoco
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-9-16
得分:0 
是没什么问题啊!可是我不能正常显示!只能把 pringt() 函数写道 while 后面的花括号内才行!也能正常计数和显示了!真是不解!就是下面这样才正常!
程序代码:
#include <stdio.h>

main()

{
    int c, nb, nt, nl;

    nb = 0;
    nt = 0;
    nl = 0;

    while ((c = getchar()) != EOF){

        if (c == ' ')
            ++nb;
        if (c == '\t')
            ++nt;
        if (c == '\n')
            ++nl;

    printf("%d %d %d\n", nb, nt, nl); /* printf() 放在这里显示nb, nt, nl 
    
                                        和输入字符都可以正常显示,只是有两行*/

    }

}

2015-09-16 15:07
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
林斑竹说的已经很清楚了  看不明白吗

DO IT YOURSELF !
2015-09-16 15:15
freecoco
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-9-16
得分:0 
林斑说的不是条件不满足吗?我这条件都满足了啊?再说了这是书上练习题的源码啊!条件无非就是我按回车按空格按制表符了吗?这肯定得按啊!条件判断语句也没问题啊?
2015-09-16 15:30
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
你是windows操作系统吗   你按ctrl  Z 退出输入了吗

DO IT YOURSELF !
2015-09-16 15:33
freecoco
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2015-9-16
得分:0 
我是Linux系统.10年linux经验,就是会点python,shell什么的,命令行是都明白啊!闭着眼一样用!就是最近想深入学习一下C,学学内核,这难道和系统有关系吗?C不是在Unix开发的吗? 和linux也差不多啊
2015-09-16 15:41



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




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

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