请帮助解决函数的有关问题,谢谢

C语言 码拜 8年前 (2017-05-03) 1422次浏览
#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

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:
引用

练习4-1 编写函数strrindex(s,t),它返回字符串t在s中最右边出现的位置。假如s中不包含t,则返回-1
首先这个问题本人就感觉很别扭,他想表达的意思本人不理解,例如说本人输入(abcdefg,bcdefg abc,efg)这串字符,

题目的意思就是:
假如字符串要s是”abcabc”,字符串t是“abc”,那么最右边出现的位置就是3,假如s中不包含t,就返回-1

弱弱问一句,为啥是3?3代表的是什么意思呢?

索引号,最左边是0

不好意思,本人还是有点不清楚您说的索引号是什么意思,最左边是0 是什么意思?

a  b  c  a  b  c
0  1  2  3  4  5


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请帮助解决函数的有关问题,谢谢
喜欢 (0)
[1034331897@qq.com]
分享 (0)