⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 搜索关键词.cpp

📁 ns2的tcl脚本的解析器,能够解析简单的有限网络下的tcl脚本,并保存为.data文件
💻 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 + -