资源简介
核心算法采用比较先进的kmp算法,代码完全出自自己的努力。你要是感兴趣,就请给点儿辛苦费吧!
另外,补充一点儿,功能也比较全面
代码片段和文件信息
#include
#include
#include
#include
#define N 100
int nextval[N];//存储nextval的值
int place[N];
int OverlayValue[N];
int num[4]={0};//num[0]代表空格 num[1]代表字母 num[2]代表数字 num[3]代表单词个数
typedef struct text//
{
char sline[90];
struct text *next;
}TEXT;
bool isAlphabet(char &t);//如果字符是字母就返回真
bool isDigit(char &t);//如果是数字就返回真
bool isSpace(char &t);//是空格就返回真
int wordnum(char *t);//统计某一行的单词数量
void GetNextval(char const *ptr int plenint *nextval);//求nextval
int kmp1(char const *scrint slenchar const *ptrint plenint const *nextvalint pos);//求字符串中模式串的个数
int search(char const *scrchar const *ptr);///在主串中找到字串的位置,没有返回零
bool delet(char const *scrchar const *ptr);//删除指定的字串。
bool readtext(TEXT *headint n);//读入文章
void release(TEXT *head);//释放节点
void OutputText(TEXT *head);//在屏幕上输出文字
int countword(TEXT *headchar const *ptr);//统计文章中某个单词的个数
void countother(TEXT *head);//统计文章中的空格,字母,数字和单词的个数
int deltext(TEXT *headchar const *ptrint *OverlayValue);//删除文章中的指定单词
void OverlayFun(char const *ptrint *OverlayValue);//覆盖函数
int main()
{
TEXT *head;
head=(TEXT *)malloc(sizeof(TEXT));
if(head==NULL)
{
printf(“内存分配失败\n“);
return -1;
}
printf(“请输入你要写入的文章的行数: “);
int n;
scanf(“%d“&n);
getchar();
readtext(headn);
printf(“请输入你要查找的单词: “);
char t[80];
scanf(“%s“t);
GetNextval(tstrlen(t)nextval);
int thewordnum=countword(headt);
countother(head);
printf(“你查找的单词在文章中的个数是:%d\n“thewordnum);
printf(“文章中空格的个数:%d\n字母的个数:%d\n数字的个数:%d\n单词的个数:%d\n“num[0]num[1]num[2]num[3]);
char inputtag=‘Y‘;
while(inputtag==‘y‘ ||inputtag ==‘Y‘)
{
printf(“请输入你要删除的单词:“);
char thedel[80];
scanf(“%s“thedel);
//if(!=0 )
// {
deltext(headthedelOverlayValue);
printf(“输出删除后的文章\n“);
OutputText(head);
printf(“继续删除单词请按y : “);
char x;
scanf(“ %c“&x);
inputtag=x;
// }
// else
// {
// printf(“文章中没有你要删除的单词!\n重新删除请按y“);
// char x;
// scanf(“ %c“&x);
// inputtag=x;
// }
}
release(head);
return 0;
}
bool isAlphabet(char &t)//如果字符是字母就返回真
{
if(t>=‘a‘&&t<=‘z‘ || t>=‘A‘&&t<=‘Z‘)
return true;
else return false;
}
bool isDigit(char &t)//如果是数字就返回真
{
if(t>=‘0‘ && t<=‘9‘)
return true;
else return false;
}
bool isSpace(char &t)//是空格就返回真
{
if(t==‘ ‘)
return true;
else return false;
}
int wordnum(char *t)//统计字符串中的单词个数
{
int i;
bool tag=false;
bool is=false;
int wordnum=0;
for(i=0;i {
if(t[i]==‘ ‘ && !tag)//忽略字符串开头的空格字符
continue;
else tag=true;
if(t[i]>=‘a‘ && t[i]<=‘z‘ || t[i]>=‘A‘ && t[i]<=‘Z‘)
{
is=true;
}
else if((t[i]==‘ ‘ || t[i]==‘‘ || t[i]==‘.‘ || t[i]==‘\n‘|| t[i]==‘\0‘ || t[i]==‘?‘ || t[i]==‘!‘) && is)//is为true代表在遇到空格或其他分隔符之前遇到字母
{
wordnum++;is=false;
}
}
if(is)wordnum++;
return wordnum;
}
void GetNextval(char const *ptr int plenint *nextval)//求nextval
{
int i=0;
nextval[0]=-1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 725971 2013-07-17 10:42 任师锋-201107063-文章编辑\任师锋-201107063-文章编辑.docx
文件 188463 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\Debug\text.exe
文件 194632 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\Debug\text.ilk
文件 17897 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\Debug\text.obj
文件 216072 2013-07-09 15:40 任师锋-201107063-文章编辑\文章编辑\Debug\text.pch
文件 451584 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\Debug\text.pdb
文件 41984 2013-07-17 10:12 任师锋-201107063-文章编辑\文章编辑\Debug\vc60.idb
文件 53248 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\Debug\vc60.pdb
文件 6599 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\text.cpp
文件 3377 2013-07-17 08:15 任师锋-201107063-文章编辑\文章编辑\text.dsp
文件 533 2013-07-17 10:46 任师锋-201107063-文章编辑\文章编辑\text.dsw
文件 41984 2013-07-17 10:46 任师锋-201107063-文章编辑\文章编辑\text.ncb
文件 48640 2013-07-17 10:46 任师锋-201107063-文章编辑\文章编辑\text.opt
文件 1259 2013-07-17 10:10 任师锋-201107063-文章编辑\文章编辑\text.plg
文件 77 2013-07-17 20:47 任师锋-201107063-文章编辑\说明.txt
目录 0 2013-07-17 10:48 任师锋-201107063-文章编辑\文章编辑\Debug
目录 0 2013-07-17 10:48 任师锋-201107063-文章编辑\文章编辑
目录 0 2013-07-17 10:53 任师锋-201107063-文章编辑
----------- --------- ---------- ----- ----
1992320 18
- 上一篇:VC++调用大漠插件
- 下一篇:网易云ncm付费音乐格式转换为MP3
评论
共有 条评论