定义两个字符串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;
}