分享
三行代码  ›  专栏  ›  技术社区  ›  Sai Sankalp

使用EOF和getchar()计算字符数

c
  •  1
  • Sai Sankalp  · 技术社区  · 1 周前

    我想写一个程序来计算C中的字符数。下面是我的程序:

    #include <stdio.h>
    
    
    int main(void){
    
        
        // long nc;
    
        // for(nc = 0; getchar() != EOF; nc++);
    
        // printf("%ld\n", nc);
    
        long nc;
    
        nc = 0;
        while(getchar() != EOF){
    
            ++nc;
        }
    
        printf("%ld\n", nc);
    
        return 0;
    }
    

    当我使用输入执行上述程序时:-

    123<Enter>
    

    然后我按Mac上的控件+^d来表示EOF,我得到的输出是4D而不是4。有谁能告诉我为什么我的输出是D?

    1 回复  |  直到 1 周前
        1
  •  1
  •   Some programmer dude    1 周前

    [把我的评论变成答案]

    “问题”是终端程序自己编写输出 ^D 作为对 Ctrl-D键 .

    使用程序的原始输出(没有额外的前导换行符),程序编写其输出 4 越过 ^

    这会成功的 就像你程序的输出是 4D

    作为一种可能的解决方案,您可能需要检查终端程序的设置,看看是否可以禁用它自己的输出。