c++ - 关于c语言 strstr函数的问题

浏览:32日期:2023-05-06

问题描述

先上代码吧

#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;}

运行结果是c++ - 关于c语言 strstr函数的问题

讲道理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;}

c++ - 关于c语言 strstr函数的问题

此时又能被找到,求解

问题解答

回答1:

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()就可以得到你想要的结果c++ - 关于c语言 strstr函数的问题

回答2:

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

相关文章: