资源简介
在一个文件中查找某个关键词,并把出现该关键词的行及行号显示出来。
使用C语言的字符串存储结构来实现字符串的操作,编写函数index实现在一个传中查找子串的功能。然后从文件中每次读入一行,作为一个主串看待,然后查找是否存在待查找的关键词(子串),如果有则显示该行内容及行号,否则继续处理下一行。
代码片段和文件信息
#include
#include
#define MAXSTRLEN 255 //最大串长
typedef char SString[MAXSTRLEN+1]; //串的定长顺序存储表示
int next[MAXSTRLEN]; //KMP算法中用到的next
void get_next(SString Tint next[]) //求next值
{
int j=1k=0;
next[1]=0;
while(j {
if(k==0||T[k]==T[j])
{
++j;++k;
if(T[j]!=T[k]) next[j]=k;
else next[j]=next[k];
}
else k=next[k];
}
}
int Index(SString SSString Tint pos) //KMP算法
{
int i=posj=1;
while(i<=S[0]&&j<=T[0])
{
if(j==0||S[i]==T[j]) {++i;++j;}
else
j=next[j];
}
if (j>T[0]) return (i-T[0]);
else
return 0;
}
int lenth(SString str) //求串长
{
int i=1;
while(str[i]) i++;
return(i-1);
}
void find(char name[]SString keys) //查找函数,该函数是整个程序的重要部分,对于输入的每一个
{ //要查找的关键字,从小说文件中逐行读取字符串查找
SString text; //存放从小说文件读取的一行字符串
int i=1j=0knum=0; //i用于存放行号,j用于存放列号k用于输出格式的控制
FILE *fp;
if (!(fp=(fopen(name“r“)))) //打开小说文件
{
printf(“Open file error!\n“);
exit(0);
- 上一篇:套接字编程Socketc++实现源码
- 下一篇:ifft的c语言编程
相关资源
- 实现简单银行叫号模拟系统(C++版)
- STM32F103ZET6 按键串口 发16进制[字符串
- Linux下c语言实现对文本内容的三种输
- 递归反转字符串带中文
- LZW编码 较短代码来表示较长字符串来
- [纯C语言 + Win32 API]一步一步写个围棋
- 哈希检索算法的C++实现源代码
- 字符串匹配算法详解 BM算法 c语言
- c语言关键字汇总
- 基于OpenCV的图像检索系统(源码)
- 算术表达式C算法输入:一个算术表达
- 一个判断字符串编码类型的类,支持
- 设计一个测试程序比较几种内部排序
- C语言32个关键字九种控制语句34种运算
- c++实现的字符串替换功能
- C语言的32个关键字、9种控制语句、
- C语言32个关键字九种控制语句34种运算
- C语言32个关键字九种控制语句34种运算
- 航班信息的查询与检索数据结构课设
- 继承和派生向量类模板和字符串类
- 利用Hash技术统计C源程序中关键字的频
- c语言写的根据字符串排序的算法
-
纯C语言解析xm
l字符串 - VC++中运算表达式字符串解析求值四则
- vc 源码 md5字符串加密算法 绝对可以用
- 多关键字排序C语言
- C++字符串处理大集合
- C++实现找出两个字符串中最大的公共
- C语言百科全书集合了c语言关键字分类
- 编写程序求出所给出的字符串中最长
评论
共有 条评论