c - 在 C 中计算大小写字母的问题

标签 c while-loop counter

我编写了一个程序,它应该计算大小写字母和其他符号,但是当我单击 Enter 然后单击 ^C (EOF) 时,它什么都算。我不知道如何跳过它,希望有人能以某种方式帮助我<3

#include <stdio.h>
#include <ctype.h>

int main()
{
  char ch;
  int uppers = 0, lowers = 0, others = 0;


  while((ch = getchar()) != EOF)
  {
    if(islower(ch))
      lowers++;

    else if(isupper(ch))
      uppers++;

    else
      others++;
  }

  printf("\n\nUpper letters - %d  Lower letters - %d   Others- %d", uppers, lowers, others);


  return 0;
}

最佳答案

Ctrl+C 发送一个 SIGINT,通常只会终止您的应用程序。

你需要的是Ctrl+D,它会触发EOF。

编辑:请注意,在 Windows 的默认 shell 上,您可能需要 EnterCtrl+ZEnter(或 F6)(尽管 Ctrl+Z 完全在 Linux shell 中执行其他操作,发送SIGSTOP)。参见 this question .

您还可以与 0xD 而不是 EOF 进行比较以捕获 Enter,或者可能使用 0x1B 这将 catch Esc。通过这种方式,您可以避免在不同平台上触发输入结束的怪癖(除非您想处理输入流)。

另请查看 this comment以上以及this answer其中包含我遗漏的重要附加信息!

关于c - 在 C 中计算大小写字母的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62086431/

相关文章:

windows - 为什么我不能终止这个 while 循环?

java - 对JAVA处理这个工作流程和引用情况的方式感到困惑。有人可以澄清一下吗?

java - 字计数器程序未产生正确的字数

c++ - 验证整数中的值...?

c++ - 范围与 ctags 在功能方面

c - 我想将方阵逆时针旋转90度,但输出不是我需要的

php - 我如何在 PHP 中列出与 while 循环具有相同 id 数据的列表?

android - 在这种情况下,将 C/C++ 用于 iOS/Android 跨平台代码是否合理?

php - MySQL CONCAT_WS 三列,在explode()之后在foreach循环中回显结果

jquery - 使用 ERB/jquery 链接到下一页