strstr 参数出入NULL
时间: 2024-08-29 16:03:14 浏览: 34
strstr和strcpy函数实现
`strstr` 函数是C语言标准库中的一个字符串处理函数,其原型定义在 `<string.h>` 头文件中。该函数用于在一个字符串中查找另一个字符串首次出现的位置。如果找到了子字符串,函数返回指向第一次出现的位置的指针;如果没有找到,则返回NULL指针。
函数原型如下:
```c
char *strstr(const char *str1, const char *str2);
```
其中 `str1` 是主字符串,`str2` 是要查找的子字符串。
如果 `str1` 或 `str2` 为NULL,那么 `strstr` 函数将表现如下:
- 若 `str1` 是NULL,则函数行为未定义,通常会导致程序崩溃或异常行为,因为无法对NULL指针进行解引用操作。
- 若 `str2` 是NULL,则函数的行为是未定义的。在C标准中,并没有对这种情况给出明确的规定,这可能导致不可预测的结果。
因此,在使用 `strstr` 函数时,应该确保传入的指针都不是NULL。为了代码的安全性,可以先检查指针是否为NULL,然后再调用 `strstr` 函数。
示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
const char *str1 = "Hello, World!";
const char *str2 = "World";
const char *nullStr = NULL;
// 正常使用strstr函数
char *result = strstr(str1, str2);
if (result != NULL) {
printf("Found: %s\n", result);
} else {
printf("Not Found\n");
}
// 尝试对NULL指针使用strstr函数
result = strstr(nullStr, str2);
// 这里可能会导致程序崩溃或异常行为
return 0;
}
```
阅读全文