#include<stdio.h> #define MAXLINE 1000 //最大输入行长度 int getline(char line[],int max); int strindex(char source[],char searchfor[]); char pattern[] = "efg"; //待查找的模式 int 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,pos; 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"){ pos = i;; } } return pos; }
练习4-1 编写函数strrindex(s,t),它返回字符串t在s中最右边出现的位置。假如s中不包含t,则返回-1
首先这个问题本人就感觉很别扭,他想表达的意思本人不理解,例如说本人输入(abcdefg,bcdefg abc,efg)这串字符,
假如按作者意思,这段代码可以输出什么呢?为什么本人按照答案写的这段代码会输入什么就输出什么呢?
解决方案
10
接楼上的话,假如s是“abcabc”,t是”abc”,那么t在s中出现的最后一次,是最后三个字母,此时t中的字符”a”,对应到s中,索引值(数组下标)是3
20
a b c a b c
0 1 2 3 4 5