C中的基本字符计数

Basic character counting in C

无法获得实际计数,但我没有发现我做错了什么。

我输入一个词,按回车键,然后没有任何反应,它保持 运行。

int main(void)
{    
  double nc;

  for (nc = 0; getchar() != EOF; ++nc)
      ;
  printf ("%.0f\n", nc);
}

当从交互式控制台输入读取时,getchar() 不会 return EOF 仅仅因为用户停止输入或按下 return,它会在必要时等待用户在键盘上输入新内容。因此,for 循环不会终止。

您必须使用特殊的组合键(取决于所使用的操作系统)来发出文件结束信号或检查其他输入以终止循环(例如,行结束)

如前所述,在输入 ^D 之前,EOF 不会为真。终止它,但也要检查换行符。在这里检查这个较旧的问题以获得一些好的背景: getchar() != EOF

这是使用整数编写并检查换行符或 EOF 的程序

// Customize AT_END Macro to return true based on some condition
#define AT_END(ch) (((ch)=='\n') || ((ch)==EOF)) 

int main(void)
{    
  int  inpChar = getchar();
  int  nc      = 0;

  while (!AT_END(inpChar)) {
      nc++;
      inpChar = getchar();
  };

  printf("Number of chars=%d\n", nc);
}