请问怎么在txt中统计某一字符串出现的次数并输出呢?
我可以打开或创建一个txt文件并在其中添加新的文本,能显示文本的内容,请问怎么在txt中统计某一字符串出现的次数并输出呢?#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#include <iostream.h>
#include <fstream.h>
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位继续对比都行..可是我不会做,凄凉,能不能教我怎么写这个代码啊,蟹蟹!我太菜了(╥╯^╰╥)