【发布时间】:2015-11-20 02:08:36
【问题描述】:
这是一个简单的问题,但是,当我使用 strstr 函数时,为什么针的大小必须至少比针中的实际文本大一个字符?这是因为空字符的原因吗?
当我把针作为针[1] 时,它不起作用。为什么可以将确切的字符数放入大海捞针?
#include <stdio.h>
#include <string.h>
int main(void)
{
const char haystack[21] = "IDontUnderstand?Help!";
const char needle[2] = "?";
char *buffer;
buffer = strstr(haystack, needle);
printf("The substring is: %s\n", buffer);
return(0);
}
【问题讨论】:
-
C 风格的字符串需要以
'\0'结尾,否则没有任何标识结束。 -
只要不修改内容,使用
const char* needle = "?";。问题解决了。 -
你可以写成
const char haystack[] = "IDontUnderstand?Help!";,而不是const char haystack[21] = "IDontUnderstand?Help!";。在后一种情况下,数组所需的大小由编译器计算。 -
旁注:如果您的针是单个字符,您可以使用
strchr()。