问题描述
先上代码吧
#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;}
此时又能被找到,求解
问题解答
回答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()就可以得到你想要的结果
把你那个糟心的取地址符去掉。看一下&吧