定义两个字符串s和t,在s中查找t。如果能够找到,则输出t在s中首次出现的第一个字符的下标;否则,输出“Not Found”。

定义两个字符串s和t,在s中查找t。如果能够找到,则输出t在s中首次出现的第一个字符的下标;否则,输出“Not Found”。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* search(char*s,char*t)
{    
    int t_size=strlen(t),s_size=strlen(s),T,i,j;
    char *p=NULL;
    for(i=0;i<=(s_size-t_size);i++)
    {
        p=s+i;
        T=1;
        for(j=0;j<t_size;j++)
        {
            if(*p!=*(t+j))
            {
                T=0;
                break;
            }
            p++;
        }
        if(T==1)
            break;
    }
    if(T==0)
        return NULL;
    else
        return s+i;
}


int main()
{
    char* S = "qwertyuoiuywerqwrew";
    char* T = "ty";
    char* R = search(S,T);
    if(R == NULL) printf("Not Found\n");
    else printf("%d",strlen(S)-strlen(R));
    
    return 0;
}

供参考:

#include <stdio.h>
#include <string.h>
#define MAXS 81
char* search(char* s, char* t);
int main()
{
    char s[MAXS], t[MAXS], * pos;
    gets(s);
    gets(t);
    pos = search(s, t);
    if (pos != NULL)
        printf("%d", pos - s);
    else
        printf("Not Found");

    return 0;
}
char* search(char* s, char* t)
{
    int i, j, k, flg;
    char* pos = NULL;
    for (i = 0, flg = 1; flg && s[i] != '\0'; i++)
        for (j = i, k = 0; t[k] == s[j]; k++, j++)
            if (t[k + 1] == '\0') { pos = s + i; flg = 0; break; }
    return pos;
}