c++ - 关于c语言 strstr函数的问题
伊谢尔伦
伊谢尔伦 2017-04-17 13:43:38
[C++讨论组]

先上代码吧

#include <stdio.h>
#include <string.h>
int main ()
{
    char test[]="jei123";
    char key[]="jeid23";
    int length = strlen(key);
    for(int i=0;i<length;i++)
    {
        if(strstr(test,&key[i])!=NULL)
        {
            printf ("%c已找到\n",key[i]);
        }
        else
        {
            printf ("%c失踪\n",key[i]);
        }
    }
    return 0;
}

运行结果是

讲道理j e i都应该被找到的

接下来换代码

#include <stdio.h>
#include <string.h>
int main ()
{
    char test[]="jei123";
    char key[]="jei123"; //更换此处代码
    int length = strlen(key);
    for(int i=0;i<length;i++)
    {
        if(strstr(test,&key[i])!=NULL)
        {
            printf ("%c已找到\n",key[i]);
        }
        else
        {
            printf ("%c失踪\n",key[i]);
        }
    }
    return 0;
}

此时又能被找到,求解

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
天蓬老师

strstr (str1, str2) 函数用于判断字符串str2是否是str1的子串。如果是,则返回str2在str1中出现的首地址
str1,str2是两个char类型指针

char test[]="jei123";       
char key[]="jeid23";
for(int i=0;i<length;i++)
{
    if(strstr(test,&key[i])!=NULL) 
    判断 " jeid23"  是  "  jei123"  的子串  明显不是,所以返回为空  
    判断 " eid23"   是  "  jei123"  的子串  明显不是,所以返回为空 
    以此类推
    只会找到  2  3
   
  

将strstrt()改为strchr()就可以得到你想要的结果

高洛峰

把你那个糟心的取地址符去掉。看一下&吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号