我是编程的新手,所以请原谅我的愚蠢问题。我分别在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会告诉我Your Program may have a endless loop
。为什么会发生这种情况?
在repl.it上,在屏幕右侧输入输入并按Enter键后,没有响应。但输入复制程序
int c;
c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
答案 0 :(得分:0)
以下提议的代码:
两个网页之间的差异与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);
}