从0开始<九> 字符串相关:grep函数的简单实现
来源:互联网 发布:蒙娜丽莎瓷砖设计软件 编辑:程序博客网 时间:2024/05/16 08:39
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">程序一:grep函数的简单实现</span>
思路:先看流程,其中可用前面的getline实现未处理的行,然后编写函数strindex(s,t)实现该目标,至于打印部分使用printf函数即可
<span style="font-size:18px;">while (还有未处理的行){if (改行包含指定的模式)打印该行 }</span>
</pre><p><pre name="code" class="cpp"><span style="font-size:18px;">#include <stdio.h>#define MAXLINE 1000 int getline(char line[], int max);int strindex(char source[], char searchfor[]);char pattern[] = "ould"; /*待查找的数*/int main(void){char line[MAXLINE];int len;while ( (len=getline(line,MAXLINE)) > 0){if ( strindex(line,pattern) >= 0)printf("%s",line);}return 0;}/*将行保存到s中,并返回改行的长度*/int getline(char s[], int lim){int c,i;i = 0;while (--lim>0 && (c=getchar())!=EOF && c!='\n')s[i++] = c;if (c == '\n')s[i++] = c;s[i] = '\0';return i;}/*返回t在s中的位置,若未找到返回-1*/int strindex(char s[], char t[]){int i,j,k;for (i=0; s[i]!='\0'; ++i){for (j=i,k=0; t[k]!='\0'&&s[j]==t[k]; j++,k++);/*考虑一种情况,t为NULL,就会明白为什么k>0这个条件了,当然可以在开头判断,看看别人写的程序和自己的比比,加油呀*/if (k>0 && t[k]=='\0') return i;}return -1;}</span>程序二:编写函数strindex(s,t),它将返回字符串t在s中最右边出现的位置,如果s中不包含t ,则返回 -1。
int strindex(char s[], char t[]){int i,j,k;for (i=strlen(s)-strlen(t); i>=0; --i){for (k=i,j=0; t[j]!='\0'&&t[j]==s[k]; ++k,++j);if (j>0 && t[j]=='\0')return i;}return -1;}
0 0
- 从0开始<九> 字符串相关:grep函数的简单实现
- 从0开始<十>:atof 函数的简单实现
- 从0开始<五>:字符串相关-htoi函数,删除字符串中指定字符
- 字符串相关函数的实现
- 从0开始<十二>:strcpy、strcmp、strcat函数的实现
- 从0开始<十一>:简单计算器实现
- C风格字符串和string类的操作——从实现atoi函数开始
- 从0到开始<七>:字符串相关及位运算
- 从源字符串截取子串相关函数的封装
- 一些简单字符串函数的实现
- 简单的一些字符串实现函数
- 字符串核函数的简单python实现
- 字符串的相关函数
- 字符串的相关函数
- 从0开始<十三>:getint()函数(类似于scanf函数)以及库函数strncpy、strncat及strncmp函数的实现
- PowerShell实现简单的grep功能
- oralce从第一位不是0的数据开始截取字符串
- 从JavaScript的实现开始
- LeetCode53——Maximum Subarray
- 新的开始
- 原码、反码、补码和移码
- 如何用户vs 远程调试代码
- startActivityForResult和setResult详解
- 从0开始<九> 字符串相关:grep函数的简单实现
- CodeForces 477B-E - Dreamoon and Sets-构造规律题
- 面向对象基础2:多态.抽象类
- hdu5480
- 软件测试工程师笔试题
- 20151024的NOIP模拟赛
- POJ 1062 昂贵的聘礼 (dijkstra)
- BZOJ 4287(慎二的随机数列-构造+LIS)
- String类和基本数据类型包装类