【c语言笔记】字符串关键字匹配算法 您所在的位置:网站首页 c语言关键字讲解 【c语言笔记】字符串关键字匹配算法

【c语言笔记】字符串关键字匹配算法

2023-08-16 07:47| 来源: 网络整理| 查看: 265

作者:小成Charles 商业工作,学习交流请添加Vx:Lcc-Triumph 原创作品 转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/115711676

Github代码下载地址:https://github.com/xiaocheng99/c_project

引言

这是一个学习C语言的笔记开篇,做一些简单有趣的c小程序。下面是C语言字符串关键字的匹配算法讲解笔记 在这里插入图片描述

一、主函数

这段代码块定义了一个全局变量pattern作为目标关键词,其中'\0'是字符串的结束标志。charline是从getline获取到的被匹配句子,while循环条件会一直进行字符串的输入,直到出现一个完整的句子就会执行strIndex函数来判断当前句子是否包含关键字,下面来讲解函数getLine和函数strIndex

#include #define MAXLINE 1000 char pattern[] = "charles\0"; int main() { char charLine[MAXLINE]; int found = 0; while (getLine(charLine, MAXLINE)>0) { //printf("keypress:%s", charLine); if (strIndex(charLine,pattern)>=0) { printf("\"loud\" postion:%s", charLine); found++; } } return found; } 二、getLine函数

这里其实是进行字符串的输入,当输入为换行时,缓冲区会判断到为换行符'\n',这时候我们就判定为当前为一个句子,跳出循环,返回一个i,此时的i是大于零的,在主函数里面就是一个真值,如果当前为EOF(End Of File),即为结束(windows下按Ctrl+Z再回车),此时不返回值,在主函数里面就是假,不执行接下来的程序。

int getLine(char line[],int max) { int c, i; i = 0; while (--max > 0 && (c=getchar())!=EOF && c!= '\n') { line[i++] = c; } if (c=='\n') { line[i++] = c; line[i] = '\0'; return i; } } 三、strIndex函数

这里是实现字符串匹配的主要算法逻辑,第一个for循环首先对字符串进行遍历,并且第二个for循环一直在对字符串与关键词的第一个字符进行比较,如果发现字符串的某一个字符和关键词的第一个字符相等,那么第二个for循环就会执行,去依次判断字符串后面几个和关键词的字符是否相同,由于关键词有一个‘\0’结束符,当完全匹配的时候,关键词字符串数组下标将会累加到结束符的下标,所以当关键词下标指向的字符为'\0'时,则找到所匹配的字符串,并且返回一个大于零的下标。主函数收到后,打印当前句子。

int strIndex(char source[],char serachfor[]) { int i, j, k; for (i = 0; source[i] != '\0'; i++) { for (j = i, k = 0; serachfor[k] != '\0'&&source[j] == serachfor[k];j++,k++); if (k>0&&serachfor[k]=='\0') { return i; } } return -1; }

Github代码下载地址:https://github.com/xiaocheng99/c_project

作者:小成Charles 商业工作,学习交流请添加Vx:Lcc-Triumph 原创作品 转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/115711676



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有