4-1:strrindex(s,t)

《C程序设计语言》练习4-1
编写函数strrindex(s,t),它返回字符串t在s中最右边出现的位置。如果s中不包含t,则返回-1。

代码:

123456789101112131415161718192021222324252627282930313233343536373839404142
#include <stdio.h>#include <string.h>int strrindex(char s[],char t[]);int main(){    char s[] = "abqqqcdqqefqgqhijkqqqqlmnopqqqqrsqqqqtqrqrqrscsdaadzcqraaaaqqqqqr";    char t[] = "qr";    int Locate = strrindex(s,t);    return 0;}int strrindex(char s[],char t[]){    int i = 0;    int ret = -1;    int tLenth = strlen(t);//字符串t的长度    for (i = 0; s[i] != '\0'; i++)    {        if (s[i] == t[0])//s[i]和字符串t的首元素相等了        {            int j = 0;            for (j = 0; j < tLenth; j++)            {                static int Count = 0;//记录元素相等的个数,和t的长度相等时,代表找到了                if (s[i+j] == t[j])//其他元素也相等                {                    Count++;                    if (Count == tLenth)//记录的相等个数和t的长度相等                    {                        ret = i;                        Count = 0;//记录清零,为了后面查找准备                    }                }                else//出现了不相等的元素                {                    Count = 0;//记录清零                    break;                }            }        }    }    return ret;}

代码:

12345678910111213141516171819202122232425262728293031
#include <stdio.h>#include <string.h>int strrindex(char s[], char t[]);int main() {    char s[] = "abqqqcdqqefqgqhijkqqqqlmnopqqqqrsqqqqtqrqrqrscsdaadzcqraaaaqqqqqr";    char t[] = "qraaa";    int Locate = strrindex(s, t);    return 0;}int strrindex(char s[], char t[]) {    int sLength = strlen(s);    int tLength = strlen(t);    int i, j    for (i = sLength - tLength; i >= 0; i--) //从后往前找    {        for (j = 0; j < tLength; j++)         {            if (s[i + j] != t[j]) //不匹配的时候            {                break;            }        }        if (j == tLength) //找到了        {            return i;  // 找到最后一次出现的位置        }    }    return -1// 如果未找到}
🔍 ×