📄 搜索关键词.cpp
字号:
#include <stdio.h>
#include <string.h>
#include "ctype.h"
#include "stdlib.h"
#include "搜索关键词.h"
int count=0;//计数器
struct buffer *now;
struct buffer *head;
//读单词前的预处理
char preleach(FILE *fp,char ch)
{
if (ch=='#')
{
ch=fgetc(fp);
while(ch!='\n'&&ch!=EOF)ch=fgetc(fp);
}
return(ch);
}//对注释的过滤
char pre_getting(char *ch,FILE *fp)
{
while(*ch!=EOF&&(*ch=='\n'||*ch=='\t'||*ch==';'||*ch==' '||*ch=='[') )
*ch=fgetc(fp);
return(*ch);
}//提前读出一个有效自符
char sim_get(char ch)
{
if(ch=='['||ch==']')return(' ');
else return(ch);
}//处理分号问题
//保存单词的基本函数
void ins_save(char *word)
{
struct buffer *temp;
temp=(buffer *)malloc(sizeof(buffer));
strcpy(temp->word,word);
temp->next=now->next;
now->next=temp;
now=temp;
count++;
}
void del_save(struct buffer *head)
{
head->next=head->next->next;
count--;
}
//读字符成单词,从第一个有效字符开始接受
void getword(FILE *fp,char *word,char *ch)
{
*ch=preleach(fp,*ch);
while(*ch!=EOF&&*ch!='\n'&&*ch!='\t'&&*ch!=';'&&*ch!=' '&&*ch!=']')
{
*word=*ch;
word++;
*ch=fgetc(fp);
}
*word='\0';
*ch=sim_get(*ch);
}
//匹配关键字
int matchword(char *word)
{
int flag=0;
if(strcmp(keyword1,word)==0)return(1);
if(strcmp(keyword2,word)==0)return(2);
if(strcmp(keyword3,word)==0)return(3);
return(0);
}
//保存单词
void saveword(char *word,struct buffer *head)
{
ins_save(word);
if(count>4)del_save(head);
}
//搜索,入口是一个有效字符+文件的指针
int search(FILE *fp,char *ch,struct buffer *head)
{
char word[50];//单词
int flag;
word[0]='\0';
getword (fp,word,ch);//读字符成单词
flag=matchword(word);//匹配关键字 1 节点 2 单链路 3双链路 0 其它
saveword(word,head);
return(flag);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -