从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
原创粉丝点击