c - C语言中如何统计某个字符在数组中出现的次数?

标签 c arrays string

所以我试图计算特定字符在我的程序中出现的次数。例如,如果我输入 ABCDA,我希望程序打印“There are 2 A's”。我的代码如下:

int main(void)
{
  char array[10000];
  printf("Enter input: \n");
  scanf("%s", array);
  printf("Array entered is: %s\n", array);

  char A;          //variable I want to count
  char *k          //used just to loop
  int a_counter;   //number of times A, occurs 

  fgets(array, sizeof(array), stdin);
  A = fgetc(stdin);
  a_counter = 0;

  for(k = array; *k; k++)
  {
    if (*k == A)
    {
      a_counter++;
    }
   }
   printf("Number of A's: %d\n", a_counter);
   return 0;
  }

在另一个论坛上发现了以下循环,该论坛也尝试计算特定字符,但我似乎无法让我的工作正常工作。我的做法是错误的吗?我也想把这一切都从 main 中去掉,但我也对如何做到这一点感到困惑。我感谢所提供的任何帮助。谢谢。

计数循环的新尝试也不起作用。我摆脱了 fgets,因为它让我感到困惑。

    int a_counter = 0;
    if (array == 'A')
    {
       a_counter++;
    }
    printf("Number of A's: %d\n", a_counter);

在 @bjorn 帮助后尝试。

#include <stdio.h>
int main(void)
{
  char array[1000];
  printf("Enter input: \n);
  scanf("%s", array);
  printf("Input is: %s\n", array);

  int c,n =0;
  while((c = getchar()) != EOF)
    if (c = 'A')
      n++;
  printf("Amount of A's is: %d\n", n);
  return 0;
 }

最佳答案

KISM - 保持简单,伙计:)对于一项简单的任务来说,你的代码太复杂了。这是一个替代方案,希望能够说明我的意思:

#include <stdio.h>

int main(void)
{
    int c, n = 0;

    while ((c = getchar()) != EOF)
        if (c == 'a')
            n++;

    printf("Where were %d a characters\n", n);
    return 0;
}

关于c - C语言中如何统计某个字符在数组中出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446615/

相关文章:

c - OpenHashing 分段故障

c - spi驱动中的基本设备操作

c++ - 100 万数组中的 C/C++ Stackoverflow 错误

javascript - 如何根据 obj 标志的状态查找数组长度

Java, "pointer"相等与字符串比较

sql - 在 SQL 中替换为通配符

c - 在 C 中将 float 传递给字符串

c - 在 Windows (ANSI C) (_beginthread/_beginthreadex/CreateProcess) 上 fork() 的任何简单/快速方法

c++ - 为什么 libcurl 需要 `CURLOPT_NOSIGNAL` 选项,启用后有什么副作用?

android - 在 android 上的字符串数组上插入 JSON 数组