C中的基本字符计数

时间:2017-03-08 00:14:04

标签: c character counting

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

我输入一个单词,点击输入,然后没有任何反应,它一直在运行。

int main(void)
{    
  double nc;

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

如上所述,在输入^ 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);
}