c - 在线编译器上 C 字符计数程序的问题

标签 c

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

#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告诉我你的程序可能有一个无限循环。为什么会发生这些?

关于repl.it ,我在屏幕右侧输入并回车后没有任何反应。然而输入复制程序

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

repl.it 上运行良好。为什么字符计数程序无法在 repl.it 上运行?对于这些情况,我将不胜感激。

最佳答案

以下建议代码:

  1. 更正问题评论中讨论的问题。

两个网页之间的差异对于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);
}

关于c - 在线编译器上 C 字符计数程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46556591/

相关文章:

c - 如何重新设计此代码以避免转到

c - 释放后如何打印链表?

c# - 如何在C#中使用 "libtomcrypt"

c - 在 C 中使用 GDI+ - gdiPlusStartup 函数返回 2

java - 如何激怒 "Application not responding"

c++ - 生成windows电脑的UID

c - 如何用枚举解释和调用函数

c - 我不断收到编译错误预期 ‘;’ 、标识符或 ‘(’ before ‘void’ void *runner(void *param)

我可以在 Eclipse CPP 中调试到 stdio 的源代码吗?

c - 终止进程时是否可以删除文件?