前几天上班一个问题找了好久,后来发现是字符串库函数strstr(str1,str2)用错了,当时理所当然的认为当str2为空串时,返回值应当为NULL,因为传入参数为空应当直接返回嘛,但后来写个demo一编才发现返回的是str1的首地址:
#include<stdio.h>
#include<string.h>
int main(void)
{
char strTmp[3] = {0,'R',0};
if(NULL != strstr("OPQRST",strTmp))
{
puts("1.exist");
printf("%s\n",strstr("OPQRST",strTmp));
}
else
{
puts("2.noexist");
printf("%s\n",strstr("OPQRST",strTmp));
}
strTmp[0] = 'Q';
if(NULL != strstr("OPQRST",strTmp))
{
puts("3.exist");
printf("%s\n",strstr("OPQRST",strTmp));
}
else
{
puts("4.noexist");
printf("%s\n",strstr("OPQRST",strTmp));
}
return 0;
}
运行结果: