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

时间:2015-10-30 04:36:50

标签: c frequency

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

即,

文字档案:

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]!='\0'; 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);
}

2 个答案:

答案 0 :(得分:1)

这是因为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);

答案 1 :(得分:0)

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

你应该成功

static int n=0;

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