笑语语语 2021-09-11 18:41 采纳率: 100%
浏览 50
已结题

getchar()函数按回车不能运行

我按书上的习题写了一个代码,结果运行的时候按回车不能运行,我以为是我的代码写错了,就把习题的答案写了一遍,但是还是不行,我就做了一个小小的代码

#include <stdio.h>

main()
{
    int a;
    long nc;
    nc=0; 
    while((a=getchar())!=EOF)
    nc++;
    printf("%ld\n",nc);
    printf("%c\n",a);
    return 0; 
}

然后这个代码按回车依然不能运行,但是我发现我换一下输出的位置就可以运行了

#include <stdio.h>

main()
{
    int a;
    int nc;
    nc=0; 
    while((a=getchar())!=EOF){
        nc++;
        printf("%d\n",nc);
        printf("%c\n",a);
    }
    return 0; 
}

我就感觉挺神奇的吧,但我看来看去也不知道哪里出错了

#include <math.h> 
#include <stdio.h>


main()
{
    int a,n1,n2,n3;
    n1=0;
    n2=0;
    n3=0;
    while(a=getchar()!=EOF){
        if(a==' ')
        n1++;
        else if(a=='\t')
        n2++;
        else if(a=='\n')
        n3++;
    }
    printf("%d %d %d",n1,n2,n3);
    return 0;
}

这个是习题的答案,我也不知道是哪里有问题

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-09-11 19:19
    关注

    img


    这个循环是每getchar()一次,nc++自增一次,直到我们输入 ctrl + z 结束输入后, 后两句printf()才会执行到。

    img


    这里的循环是,每getchar()一次,后面的{
    nc++;
    printf("%d\n",nc);
    printf("%c\n",a);
    }都被执行一次,直到输入 ctrl + z 结束输入。

    书上习题的答案, while(a=getchar()!=EOF) 这句里少一对括号,修改见注释,供参考:

     #include <math.h>
    #include <stdio.h>
    main()
    {
        int a,n1,n2,n3;
        n1=0;
        n2=0;
        n3=0;
        while((a=getchar())!=EOF){ //while(a=getchar()!=EOF)
            if(a==' ')
            n1++;
            else if(a=='\t')
            n2++;
            else if(a=='\n')
            n3++;
        }
        printf("%d %d %d",n1,n2,n3);
       
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 9月11日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分