#include<stdio.h>
#include<string.h>
#include<iostream>
#define MaxStrSize 256
using namespace std;
typedef struct {
char ch[MaxStrSize];
int length;
} SString;
int PartPosition (SString s1,SString s2,int k)
{ int i,j;
i=k-1;
j=0;
while(i<s1.length && j<s2.length)
{if(s1.ch[i]==s2.ch[j])
{ i++;j++;
}
else
{
i=i-j+1; j=0;
} }
if (j>=s2.length)
return i-s2.length;
else
return -1;
}
void CreatTextFile()
{
SString S;
char fname[10],yn;
FILE *fp;
printf("输入要建立的文件名:");
scanf("%s",fname);
fp=fopen(fname,"w");
yn='n';
while(yn=='n'||yn=='N')
{
printf("请输入一行文本:");gets(S.ch);gets(S.ch);
S.length=strlen(S.ch);
fwrite(&S,S.length,1,fp);
fprintf(fp,"%c",10);
printf("结束输入吗?y or n :");yn=getchar();
}
fclose(fp);
printf("建立文件结束!");
}
void SubStrCount()
{
FILE *fp;
SString S,T;
char fname[10];
int i=0,j,k;
printf("输入文本文件名:");
scanf("%s",fname);
fp=fopen(fname,"r");
printf("输入要统计计数的单词:");
cin>>T.ch;
T.length=strlen(T.ch);
while(!feof(fp)){
memset(S.ch,'\0',256);
fgets(S.ch,100,fp);
S.length=strlen(S.ch);
k=0;
while(k<S.length-1)
{
j=PartPosition(S,T,k);
if(j<0 ) break;
else {
i++;
k=j+T.length;
}
}
}
printf("\n单词%s在文本文件%s中共出现%d次\n",T.ch,fname,i);
}
int main()
{
void CreatTextFile(),SubStrCount(),SubStrInd();
int xz;
do {
printf("* * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("*文本文件的检索 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("* 1. 建立文本文件 *\n");
printf("* 2. 单词字串的计数 *\n");
printf("* 3. 退出整个程序 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 请选择(1--3) ");
scanf("%d",&xz);
switch(xz) {
case 1 : CreatTextFile();break;
case 2 : SubStrCount();break;
case 3 : return 0;
default:printf("选择错误,重新选 \n");
}
}while(1);
}
Keyword-Search-System.zip_system创建文本
版权申诉
173 浏览量
2022-09-23
16:53:15
上传
评论
收藏 1KB ZIP 举报
JonSco
- 粉丝: 75
- 资源: 1万+