在C语言中,`index()` 和 `rindex()` 函数是用于处理字符串的两个非常重要的函数,它们都属于C标准库中的 `<string.h>` 头文件。这两个函数的主要任务是帮助程序员在字符串中查找特定字符的出现位置。
1. `index()` 函数:
`index()` 函数的原型为:
```c
char * index(const char *s, int c);
```
其中,`s` 是一个指向字符串的指针,`c` 是要查找的字符。这个函数的作用是在字符串 `s` 中查找字符 `c` 的首次出现,并返回该字符的地址。如果在字符串中找不到字符 `c`,则返回 `NULL`。需要注意的是,字符串的结束字符 `'\0'`(NULL)也被视为字符串的一部分。
范例代码:
```c
#include <string.h>
int main() {
char *s = "0123456789012345678901234567890";
char *p;
p = index(s, '5');
printf("%s\n", p);
return 0;
}
```
上述代码会在字符串中查找字符 '5' 的首次出现,输出 "5",因为 '5' 首次出现在字符串的第6个位置。
2. `rindex()` 函数:
`rindex()` 函数的原型与 `index()` 类似:
```c
char * rindex(const char *s, int c);
```
不同之处在于,`rindex()` 函数会在字符串 `s` 中查找字符 `c` 的最后一次出现,并返回该字符的地址。如果找不到字符 `c`,同样返回 `NULL`。
范例代码:
```c
#include <string.h>
int main() {
char *s = "0123456789012345678901234567890";
char *p;
p = rindex(s, '5');
printf("%s\n", p);
return 0;
}
```
这段代码会查找字符 '5' 的最后一次出现,输出 "567890",因为 '5' 最后一次出现在字符串的倒数第5个位置。
在实际编程中,`index()` 和 `rindex()` 函数常用于处理字符串的搜索和定位需求。比如,你需要找出字符串中特定字符的位置以便进行替换或者分割操作时,这两个函数就能发挥重要作用。然而,由于它们没有提供对多字符子串的搜索功能,如果需要查找整个子串,可能需要结合其他字符串处理函数如 `strstr()` 来实现。
需要注意的是,`index()` 和 `rindex()` 在某些现代C标准库中可能被标记为过时,推荐使用 `strchr()` 和 `strrchr()` 作为替代。这两个函数在行为上与 `index()` 和 `rindex()` 相同,但更符合C标准,且具有更好的可移植性。