希望更好地理解C中的strstr函数

希望更好地理解C中的strstr函数,c,string,strstr,C,String,Strstr,我试图在一个更大的项目中使用C中的strstr函数,但无法使它工作,所以我创建了一个小的测试文件来尝试更好地学习它,唯一的问题是结果并不是我所期望的。有没有人能解释一下,基于我的这个c文件,strstr应该为我返回什么,以及我是如何错误地使用它的?当我运行这个程序时,对于strstr的所有用法,它都会返回NULL,我期望的是,对于前两个,它会返回NULL,但是对于后两个中的一个,我知道它不应该同时打印字符串笔刷。我做错了什么,或者期待错了什么 #include <stdio.h> #

我试图在一个更大的项目中使用C中的strstr函数,但无法使它工作,所以我创建了一个小的测试文件来尝试更好地学习它,唯一的问题是结果并不是我所期望的。有没有人能解释一下,基于我的这个c文件,strstr应该为我返回什么,以及我是如何错误地使用它的?当我运行这个程序时,对于strstr的所有用法,它都会返回NULL,我期望的是,对于前两个,它会返回NULL,但是对于后两个中的一个,我知道它不应该同时打印字符串笔刷。我做错了什么,或者期待错了什么

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {

char str1[11]="toothpaste";
char str2[11]="toothbrush";
char str3[6]="brush";
char str4[6]="paste";

printf("\n\nstr1=%s",str1);
printf("\nstr2=%s",str2);
printf("\nstr3=%s",str3);
printf("\nstr4=%s",str4);

printf("\n\nResult of strstr(1,2) is %s",strstr(str1,str2));
printf("\nResult of strstr(2,1) is %s",strstr(str2,str1));
printf("\nResults of strstr(2,3) is %s",strstr(str1,str3));
printf("\nResults of strstr(3,2) is %s\n\n",strstr(str3,str1));

return 0;
}

最后两种情况称str1上的strstr为str3,而不是str2。因此,他们在牙膏中寻找刷子,反之亦然。

最后两个案例称str1上的strstr和str3不是str2。因此,他们在牙膏中寻找刷子,反之亦然。

strr2、str3和str1、str4不应返回空值。您混淆了str1牙膏和str2牙刷。如果您尝试strstr2,str3,您应该会得到一个更有意义的结果。为什么后两个不返回NULL?牙膏不含刷子,刷子也不含牙膏。STRR2、str3和STRR1、str4不应返回空值。您混淆了str1牙膏和str2牙刷。如果您尝试strstr2,str3,您应该会得到一个更有意义的结果。为什么后两个不返回NULL?牙膏不含刷子,刷子不含牙膏。