C语言strstr()函数:返回字符串中首次出现子串的地址

头文件:#include

strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
    char *strstr( char *str, char * substr );

【参数说明】str为要检索的字符串,substr为要检索的子串。

【返回值】返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。

【函数示例】strstr()函数的使用。

 
  1. #include
  2. #include
  3. int main(){
  4. // 也可以改成 char str[] = "http://see.xidian.edu.cn/cpp/u/xitong/";
  5. char *str = "http://see.xidian.edu.cn/cpp/u/xitong/";
  6. char *substr = "see";
  7. char *s = strstr(str, substr);
  8. printf("%s\n", s);
  9. return 0;
  10. }

运行结果:
see.xidian.edu.cn/cpp/u/xitong/

 

例2

学密码学一定得学程序

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

曾经,ZYJ同学非常喜欢密码学。有一天,他发现了一个很长很长的字符串S1。他很好奇那代表着什么,于是神奇的WL给了他另一个字符串S2。但是很不幸的是,WL忘记跟他说是什么意思了。这个时候,ZYJ不得不求助与伟大的ZP。ZP笑了笑说,这个很神奇的,WL的意思是只要你找到她给你的字符串在那个神奇的字符串的位置,你就会有神奇的发现。ZYJ恍然大悟,原来如此,但是悲剧来了,他竟然不知道怎么找。。。。是的,很囧是不是。所以这时候就需要化身为超级玛丽亚的你现身了,告诉他吧。。。。。。

Input

 

首先输入一个n。表示有n组测试数据。

每组测试数据有两行。

第一行为字符串S1,长度不大于1000000。

第二行为字符串S2,长度不大于10000,并且长度不小于2。

Output

 

输出S2在S1的位置。如果有多个位置,只输出第一个位置。

如果找不到,就输出“::>_<::“(不输出双引号)。

Sample Input

1
ASDFGDF
DF

Sample Output

3

#include
#include
#define N 1000001
char s1[N],s2[10010];
int main()
{

    int n;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        gets(s1);
        gets(s2);
        char *s3=strstr(s1,s2);
        if(s3==NULL)
        {
            printf("::>_<::\n");
        }
        else
        {
           // printf("%s\n",s3);
           // printf("%d %d %d\n",s1,s2,s3);
            int  k=s3-s1+1;
            printf("%d\n",k);
        }

    }

    return 0;
}
 

你可能感兴趣的:(C语言strstr()函数:返回字符串中首次出现子串的地址)