ah love! could you and i with fate conspire
to grasp this sorry scheme of things entire,
would not we shatter it to bits--and then
re-mould it nearer to the heart's desire!
产生如下输出:
ah love! could you and i with fate conspire
would not we shatter it to bits--and then
re-mould it nearer to the heart's desire!
这个程序可以清楚的分成三部分:
while(还有未处理的行)
if(该行包含指定的模式)
打印该行
#include <stdio.h> #define MAXLINE 100 /*最大输入行长度*/ int getline (char line[],int max); int strindex(char source[],char searchfor[]); char pattern[]="ould"; /*要查找的模式*/ /*找出所有与模式匹配的行*/ main() { char line[MAXLINE]; int found=0; while (getline(line,MAXLINE)>0) if (strindex(line,pattern)>=0) { printf("%s",line); found++; } return found; } /*getline:取一行放到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; } /*strindex:返回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++) ; if(k>0&&t[k]=='\0') return i; } return -1; }