strrchr()函数
strrchr
函数用于在给定的字符串中查找最后一个出现的指定字符,并返回该字符的指针。
语法:
char *strrchr(const char *str, int ch);
参数:
str
:表示输入字符串的指针。ch
:表示要查找的字符,作为int
类型参数传递。
返回值:
- 如果找到指定字符,则返回最后一个出现的字符的指针。
- 如果未找到指定字符,则返回
NULL
。 - 功能:函数返回一个指针,它指向字符ch 在字符串str末次/最后出现的位置,如果匹配失败,返回NULL。
示例用法:
#include <stdio.h>
#include <string.h>
int main() {
const char str[] = "Hello World";
char *result;//定义一个指针用以接受函数返回值的地址
// 找到字符 'o' 的最后一个出现
result = strrchr(str, 'o');//返回一个指针指向‘o’
if (result != NULL) {
printf("最后一个出现的字符 'o' 在位置 %ld\n", result - str);//这里指针的减法
} else {
printf("未找到指定字符\n");
}
return 0;
}
输出结果:
最后一个出现的字符 'o' 在位置 7
在上面的示例中,我们在字符串 “Hello World” 中使用 strrchr
函数来查找字符 ‘o’ 的最后一个出现,并打印出其位置。请注意,返回的指针与初始字符串之间的差值可以给出该字符在字符串中的索引位置。
该函数在读取文件拓展名时常用:
#include <stdio.h>
#include <string.h>
void find_extension(const char *file) {//定义拓展名查询函数
const char *dot = strrchr(file, '.');
if(!dot) {
printf("没有拓展名.\n");
} else {
printf("拓展名为: %s\n", dot + 1);
}
}
int main() {
char filename[100];
printf("请输入文件名: ");
scanf("%s", filename);
find_extension(filename);
return 0;
}
要注意的是,strrchr 函数返回的是字符 '.' 的位置以及之后的所有字符。
例如,如果 file 是 "example.txt",那么 dot 将会是 ".txt"。
如果 file 是 "example",没有 '.',那么 dot 将会是NULL。
strchr()函数
strchr()
是一个字符串处理函数,用于在一个给定的字符串中查找特定字符的第一次出现的位置。
它的语法如下:
#include <string.h>
char *strchr(const char *str, int c);
参数说明:
str
:要进行搜索的字符串c
:要查找的字符或 ASCII 值
返回值:
- 如果找到了匹配的字符,则返回一个指向该字符的指针。
- 如果没有找到匹配的字符,则返回
NULL
。
strchr()
函数会从 str
字符串的第一个字符开始,逐个比较字符,直到遇到匹配的字符或字符串的结尾(即空字符 ‘\0’)。如果找到匹配的字符,则返回该字符的指针;否则,返回 NULL
。
以下是一个示例:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world!"; //定义字符串
char *ptr = strchr(str, 'o'); //调用函数
if (ptr != NULL) {
printf("Found 'o' at position: %ld\n", ptr - str);//找函数位置
} else {
printf("Character 'o' not found.\n");
}
return 0;
}
输出结果:
Found 'o' at position: 4
两个函数都是<string.h>函数库内含函数