C中的字符数

时间:2016-08-28 09:11:05

标签: c getchar

以下C程序是计算字符数。

#include <stdio.h >
int main()
{
   int nc = 0;
   while (getchar() != EOF)
   {
      ++nc;
      printf("%d\n", nc); 
   }
    return 0;
}

当我输入一个角色时,例如&#39; y&#39;在终端中,输出返回如下

1
2

这个计算是如何发生的以及为什么2在输出中?

5 个答案:

答案 0 :(得分:3)

你输入了#34;一个角色&#34;。一个y和一个新行字符。那是2。

答案 1 :(得分:3)

我想你不知道,但当你按回车键时,你只需插入换行符或'\n'。如果要获得正确的结果,请忽略换行符或将nc减少一个。

#include <stdio.h>

int main()
{
  int nc = 0;
  while (getchar() != EOF)
  {
    ++nc;
    printf("Character count is:%d\n", nc - 1);
  }
  return 0;
}

更好的代码:

#include <stdio.h>
int main()
{
  int nc = 0;
  for(;;)
  {
    do
      ++nc;
    while (getchar() != '\n');
    printf("Character count is:%d\n", nc - 1);
    nc = 0;
  }
}

更新的代码会将您的计数器重置为0.

答案 2 :(得分:1)

因为你输了两个字。一个是y,另一个是\n(换行符)字符。

因此你得到输出1和2.

答案 3 :(得分:0)

当你点击输入时,它被认为是一个角色

答案 4 :(得分:0)

如果只想计算可见字节数,可以使用isprint函数,该函数返回字节是可打印的还是空格字符。它是这样的:

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

int main()
{
  int nc = 0;
  int ch;

  while((ch = getchar()) != EOF)
  {
    if (isprint(ch) && ch != ' ')
      ++nc;
    printf("Character count after reading '%c' is %d.\n",ch, nc);
  }
  return 0;
}

请注意,由于在C中,char不是Unicode字符,但通常只是一个字节,因此该程序将某些字符计为2个或更多字节,例如表情符号,西里尔字母,中文表意文字。