char* strstr
时间: 2024-03-13 16:40:19 浏览: 62
`char* strstr` 是一个C语言中的字符串处理函数,用于在一个字符串中找另一个字符串的第一次出现位置。它的函数原型如下:
```c
char* strstr(const char* str1, const char* str2);
```
其中,`str1` 是要被搜索的字符串,`str2` 是要搜索的目标字符串。函数返回一个指向第一次出现目标字符串的位置的指针,如果没有找到目标字符串,则返回`NULL`。
这个函数会从`str1`的起始位置开始逐个字符地与`str2`进行比较,直到找到第一次出现目标字符串或者遍历完整个字符串。如果找到了目标字符串,返回的指针指向该位置;如果没有找到,返回`NULL`。
需要注意的是,`strstr` 函数是区分大小写的,如果需要进行大小写不敏感的搜索,可以使用其他函数进行处理。
相关问题
char*strstr
`strstr`是C语言库函数中的一个字符串查找函数,其原型定义在`string.h`头文件里。它用于在一个字符数组(`char*`类型)中查找指定的子串,并返回子串第一次出现的位置的指针。如果找不到该子串,它将返回空指针`NULL`。
函数原型如下:
```c
char* strstr(const char* haystack, const char* needle);
```
其中:
- `haystack` (\"haystack\") 是要在其中搜索的主字符串,
- `needle` (\"needle\") 是要查找的目标子串。
例如:
```c
char str[] = "Hello, World!";
char* result = strstr(str, "World");
if (result) {
printf("Substring found at position %ld.\n", result - str);
} else {
printf("Substring not found.\n");
}
```
在这个例子中,`strstr`会在`str`中查找"World",并打印出子串首次出现的位置。
C语言标准函数库中包括 strstr 函数,在主串中查找子串。作为练习,我们自己编写一个功能与之相同的函数。 函数原型 char* StrStr(const char *txt, const char *pat); 说明:txt 和 pat 分别为主串和子串的起始地址。若查找成功,则函数值为子串在主串中首次出现的起始地址,否则函数值为NULL。 特别地,我们对C语言库函数strstr进行适当修改:若子串为空串,则没有意义,函数值规定为NULL。 裁判程序 #include <stdio.h> #include <string.h> char* StrStr(const char *txt, const char *pat); int main() { char m[1024], s[1024], *p; gets(m); gets(s); p = StrStr(m, s); if (p) { printf("%d\n", p - m); } else { puts("NULL"); } return 0; } /* 你提交的代码将被嵌在这里 */ 输入样例1 This is a pencil is 输出样例1 2 输入样例2 This is a pencil be 输出样例2 NULL
以下是一个实现功能与 `strstr` 函数相同的 `StrStr` 函数的示例代码:
```c
char* StrStr(const char *txt, const char *pat) {
if (*pat == '\0') { // 若子串为空串,则返回 NULL
return NULL;
}
while (*txt != '\0') { // 在主串中逐个匹配子串
const char *t = txt;
const char *p = pat;
while (*t != '\0' && *p != '\0' && *t == *p) {
t++;
p++;
}
if (*p == '\0') { // 若子串已经匹配完成,则返回子串在主串中首次出现的起始地址
return (char*)txt;
}
txt++; // 否则继续在主串中查找下一次匹配的位置
}
return NULL; // 若主串中没有找到子串,则返回 NULL
}
```
该函数首先判断子串是否为空串,如果是,则返回 NULL。然后在主串中逐个匹配子串,如果匹配成功,则返回子串在主串中首次出现的起始地址,否则继续在主串中查找下一次匹配的位置。如果在主串中没有找到子串,则返回 NULL。
使用示例:
```c
#include <stdio.h>
#include <string.h>
char* StrStr(const char *txt, const char *pat);
int main() {
char m[1024], s[1024], *p;
gets(m);
gets(s);
p = StrStr(m, s);
if (p) {
printf("%d\n", p - m);
} else {
puts("NULL");
}
return 0;
}
```
阅读全文