文本文件单词的检索与计数

#include<iostream>
#include<string>
#define N 100                          
using namespace std; 
               
char str[N][80];                         
int l[N];                       
int n;                          
char a[80];                      


void input()                           
{
 int k;
 char c;                         
 k=0;
 while(1)
 {
    scanf("%c",&c);               
    if(c=='/n')
   break;
    a[k]=c;          
    k++;             
 }
 a[k]='/0';          
}

 

void print()                             
{
 int i,j;
  printf("/n____原文输出:________________________________/n");
 for(i=0;i<=n;i++)
 {
    for(j=0;j<l[i];j++)
      printf("%c",str[i][j]);
 }
 printf("/n________________________________输出结束____/n/n/n/n");
}

 

void tongji() 
{
 int i,j;
 int wz,kg,sz,sum;                    
 wz=kg=sz=sum=0;
 for(i=0;i<=n;i++)
 {
    for(j=0;j<l[i];j++)
    {
      if(str[i][j]!='/n')                        
        sum++;
         if((str[i][j]<='z'&&str[i][j]>='a')||(str[i][j]<='Z'&&str[i][j]>='A'))
        wz++;
         if(str[i][j]<='9'&&str[i][j]>='0')
        sz++;
         if(str[i][j]==' ')
        kg++;
    }
 }
 printf("/n统计结果:~~~~~~~~~~~~~~~~~~~~~~");
 printf("/n全部字母数为:/t%d/n",wz);
 printf("数字个数为:/t%d/n",sz);
 printf("空格个数为:/t%d/n",kg);
 printf("文章总字数为:/t%d/n/n",sum);
 printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n/n/n");
}

 

void chazhao()
{
 int i,j,k,l1,y;  
 int x=0;
 l1=strlen(a);
 for(i=0;i<=n;i++)        
 {
    for(j=0;j<l[i];j++)
    {
      y=1;                       
      if(j+l1==l[i])
    break;         
      for(k=0;k<l1;k++)              
      {
        if(a[k]!=str[i][j+k])
    {
     y=0;
     break;
    }
      }
      if(y)
    x++;
    }
 }
 printf("您所输入的:");
 for(i=0;i<l1;i++)  
    printf("%c",a[i]);
 printf(" 在文中出现次数为:%d/n",x);
printf("___________________________________/n/n/n");

}

 


void del()                              
{
 int i,j,k,l1,y;
 bool b[N][81];                  
 l1=strlen(a);                    
 memset(b,0,sizeof(b));            
 for(i=0;i<=n;i++)
 {
    for(j=0;j<l[i];j++)
    {
      y=1;
      if(j+l1==l[i])
    break;
      for(k=0;k<l1;k++)
      {
        if(a[k]!=str[i][j+k]&&!b[i][j+k]) 
        {
          y=0;
          break;
        }
      }
      if(y)                       
      {
        for(k=0;k<l1;k++)
          b[i][j+k]=1;               
      }
    }
 }
 printf("/n删除该字符串后文章:/n");      
 for(i=0;i<=n;i++)
 {
    for(j=0;j<l[i];j++)                        
      if(!b[i][j])
    printf("%c",str[i][j]);
       

 }printf("/n==========================输出结束====/n/n/n");
}

 

void solve()  
{
 int z;
 while(1)
 {   printf("|-++++++++++++++++++菜单++++++++++++++++++++++++-|/n");
    printf("|*****输入您需要的操作(选择序号):****************|/n");
   // printf("|********0输入文字*******************************|/n");
    printf("|********1.输出原文******************************|/n");
    printf("|********2.统计文章字数**************************|/n");
    printf("|********3.统计某一字符串在文章中出现的次数******|/n");
    printf("|********4.删除某一字符串并输出文章**************|/n");
    printf("|********5.结束**********************************|/n");
        printf("|------------------------------------------------|/n");

    scanf("%d",&z);
    //if(z==0)
   //shuru();
    if(z==1)
   print();                                   
    if(z==2)
   tongji();      
    if(z==3)
  {   printf("___________________________________");
      printf("/n输入要统计的字符串:/n");     
      getchar();
      input();           
      chazhao();
    }
    if(z==4)
  {     printf("/n======================================");
      printf("/n输入要删除的字符串:/n");           
      getchar();
      input();
      del();
    }
    if(z==5)
   break;
 }
}

 

int main()
{
 FILE *fin=fopen("remenber.txt","r");  
 char c;
 n=0;                                 
 memset(l,0,sizeof(l));              
 while(fscanf(fin,"%c",&c)!=EOF)            
 {
  str[n][ l[n] ]=c;
    l[n]++;
    if(c=='/n')
   n++;
    if(l[n]>80)
  {
   printf("超过范围/n/n");
   break;
  }
 }
 solve();
 return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值