#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