c语言如何统计字符串中字母出现的次数,请问怎么在txt中统计某一字符串出现的次数并输出呢?...

C语言统计字符串
本文介绍了一个C语言程序,用于在文本文件中统计指定字符串出现的次数,并提供了完整的代码示例。

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

请问怎么在txt中统计某一字符串出现的次数并输出呢?

我可以打开或创建一个txt文件并在其中添加新的文本,能显示文本的内容,请问怎么在txt中统计某一字符串出现的次数并输出呢?

#include

#include

#include

#include

#include

#include

#include

#include

void menu();

void wenben();

main()

{

menu();

}

void menu()

{

FILE *aa, *ab;

char filename[30];

char a[2]; //输入字符选项需要多一个字符位吸收输入的回车键

for(;;)

{

printf("输入1开始文本编辑\n输入2或者右上角点X关闭\n");

gets(a);

if(a[0]=='1'){system("cls"); wenben();    }

if(a[0]=='2') return 0;

else system("cls");

}

}

void wenben()

{    char e;

int f=0,g=0,h=0,k=0,i=0,n=1,o=0,p=0;//f计数空格,g计数英文,h计数数字,k计数全部字符数量,i计算特定字符串长度,n对比字符内容

char b[2],c[80],l[80],m[80];//b为文本编辑的选项,c是每行输入的字符串,l是用来查找特定字符串数量的字符串,m是对比的

char d[]="^^";

FILE *aa, *ab;

char filename[30];

printf("输入需要编辑的文本名,将以可读写的方式打开或者创建\n");

gets(filename);

strcat(filename,".txt");

aa=fopen(filename,"a+");//到这里打开或者创建文本

if(!aa)

{

system("cls");

printf("打开或创建失败\n");

wenben();//重新打开或创建,起个别的名字

}

if(aa)

{

system("cls");

printf("打开或创建成功\n");

}

for(;;)

{

printf("输入1在文本添加字符\n输入2退出\n输入3显示文本内全部字符\n输入4统计字符串在文章中出现的次数\n");//文本编辑的功能

gets(b);

if(b[0]=='1')//从文本的末尾添加字符

{

printf("每次最多输入80个字符,输入^^停止输入\n");

for(;;)

{

gets(c);

if (strcmp(c,d)==0)

{    fclose(aa);//操作以后关闭文件,避免丢失数据

break;

}//输入的字符串为^^,与函数内保存的一样,停止输入

aa=fopen(filename,"a+");

fputs(c,aa);

fprintf(aa,"\n");

fclose(aa);

}

}

if (b[0]=='2') break;//退出文本编辑,可以打开或创建其它文本继续文本编辑,也可以关闭程序

else system("cls");

if (b[0]=='3') //读取显示全部文本..

{

system("cls");

fclose(aa);

aa=fopen(filename,"r");//打开文件以后从文本的第一个字符开始读取字符

e=fgetc(aa);

while (e!=EOF)

{

if (e!='\n') k++;//去掉每次输入之后的输入到文本里的换行符

if (e==32) f++;

if (65<=e&&e<=90||97<=e&&e<=122) g++;

if (48<=e&&e<=57) h++;

putchar(e);

e=fgetc(aa);

}

fclose(aa);

printf("\n空格数%d\n",f);f=0;

printf("字母数%d\n",g); g=0;

printf("数字数%d\n",h);h=0;

printf("总字数%d\n\n",k);k=0;

}

if (b[0]=='4') //这个想不出来,我只会一个一个显示txt内的字符

{

printf("输入需要统计的字符串,因为分行输入,所以需要统计的字符串最多长80个字符\n");//文本内的字符串统计

gets(l);

i=strlen(l);

printf("%d\n",i);

aa=fopen(filename,"r");

e=fgetc(aa);

while (e!=EOF)

{

putchar(e);

e=fgetc(aa);

}

fclose(aa);

printf("%d\n",o);

}

}

}

我想的是验证当前字符与输入的特定字符串的第一个字符是否相同,如果相同就将这个字符与文本的后i-1个字符放到一个长80位的字符串里然后与特定字符串进行对比前i位的字符,如果相同就计数加1,然后从当前字符的下一位或者下i-1位继续对比都行..可是我不会做,凄凉,能不能教我怎么写这个代码啊,蟹蟹!我太菜了(╥╯^╰╥)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值