【发布时间】:2021-05-13 19:11:54
【问题描述】:
#include <stdio.h>
#include <string.h>
int main()
{
char s3[12]="ABCDEISHERO";
char s4[5]="ABCDE";
char* p=strstr(s3,s4);
printf("%s",p);
return 0;
}
我写了这段代码,但是根据strstr的功能,我们在字符串s3中有子字符串"ABCDE",但是为什么输出是(null)呢?我哪里错了?
【问题讨论】:
-
提示:不要像这样声明具有固定长度的字符串。使用
char s[] = "..."并让编译器为您解决。你在这里猜错了长度。如果您不需要可变字符缓冲区,请改用char* s = "..."。 -
您的数组大小不考虑空终止符。
-
s4需要有 6 个元素宽才能说明字符串终止符 -strstr不匹配它,因为(很可能)最后一个字符后面有一个或多个非零字节,所以strstr将s4视为"ABCDEandabunchofothercharacters",而不是"ABCDE"。 -
@tadman 不,使用
const char *s = "..."。 -
@AugustKarlstrom 理想情况下,是的。
标签: c initialization substring c-strings strstr