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