我正在尝试计算文本文件中的所有字符出现次数,但我得到的输出是逐行出现的输出。
即,
文字档案:
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);
}
答案 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
的出现次数。