在线编译器中C字符计数程序的问题

时间:2017-10-04 03:33:00

标签: c

我是编程的新手,所以请原谅我的愚蠢问题。我分别在repl.itJDoodle上运行了以下代码。

#include<stdio.h>
int main()
{   
    int nc;
    nc = 0;
    while(getchar() != EOF)
        nc = nc + 1;
    printf("%d\n", nc);
}

JDoodle上,结果总是x + 1,其中x是我预期的数字。例如,如果我输入123123,则结果为7.此外,如果我将输入留空,JDoodle会告诉我Your Program may have a endless loop。为什么会发生这种情况?

repl.it上,在屏幕右侧输入输入并按Enter键后,没有响应。但输入复制程序

int c;
c = getchar();
while(c != EOF){
    putchar(c);
    c = getchar();
}

repl.it上效果很好。为什么字符统计程序无法在repl.it上运行?在这些情况下,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

以下提议的代码:

  1. 纠正了评论中讨论的问题。
  2. 两个网页之间的差异与OP看到的问题无关。

    现在建议的代码:

    #include <stdio.h>
    
    int main( void )
    {
        int nc = 0;
        int ch;  // the character input from stdin
    
        while( (ch = getchar()) != EOF && '\n' != ch)
            nc = nc + 1;
    
        printf("%d\n", nc);
    }