用 C 计算文本文件中所有字符的出现次数

Counting All Character Occurrences in a Text File in C

我正在尝试计算文本文件中出现的所有字符,但我得到的输出是逐行输出的出现次数。

文本文件:

aaaaAAA
a
a

以上文件的输出

O caracter 'a' aparece 4 vez(es)
O caracter 'a' aparece 1 vez(es)
O caracter 'a' aparece 1 vez(es)

翻译:字符'a'出现了4次

我要的是这个:

O caracter 'a' aparece 6 vez(es)
O caracter 'A' aparece 3 vez(es)

代码:

 int strcountc(char *text, char c){
    int i, n=0;
    for(i=0; text[i]!='[=13=]'; i++)
        if(text[i]==c)
            n++;
    return n;
}

int main(void)
{
  FILE *ficheiro1;
  char texto_str[3000];


  ficheiro1 = fopen("encrypted_file.txt", "r");


  while(fgets(texto_str, 3000, ficheiro1) != NULL)

printf("O caracter 'a' aparece %d vez(es)\n", strcountc(texto_str,'a' ));




  fclose(ficheiro1);
  return (0);
}

在每次迭代中,您在函数调用中将 n 的值设置为 0,这不会为您提供字符数。

你应该做到的

static int n=0;

如果您想统计文件中 a 的所有出现次数。

这是因为 fgets() 。它会考虑直到遇到换行符。你正在逐行阅读。要么你可以使用 static int n = 0;或者做

int k = 0;

ficheiro1 = fopen("encrypted_file.txt", "r");


 while(fgets(texto_str, 3000, ficheiro1) != NULL)
    {
            k = k +strcountc(texto_str,'a' );
    }

    printf("no of char\t %d", k);