什么是字符串指定字符?
在使用C语言编写代码时,经常需要对字符串进行操作。当我们需要查找特定字符在字符串中的位置时,我们可以使用C语言中的库函数strchr()。
strchr()函数是什么?
C库函数char *strchr(const char *str, int c)在给定字符串str中查找第一次出现字符c(一个无符号字符)的位置,然后返回指向该位置的指针。如果未找到字符c,则返回NULL。
char *strchr(const char *str, int c);
参数
str - 要检索的C字符串。
c - 要查找的字符。
返回值
该函数返回在str中第一次出现c的位置的指针,如果未找到该字符,返回NULL。
如何使用strchr()函数查找字符串指定字符?
我们可以使用下面的代码来查找一个字符串中第一次出现的'a'字符的位置:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *result = NULL;
result = strchr(str, 'a');
if(result)
{
printf("'%c' was found at position %ld.\n", *result, result - str);
}
else
{
printf("'%c' was not found.\n", 'a');
}
return 0;
}
上面的代码输出结果为:
'a' was not found.
我们现在把代码中的'a'改为'o':
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *result = NULL;
result = strchr(str, 'o');
if(result)
{
printf("'%c' was found at position %ld.\n", *result, result - str);
}
else
{
printf("'%c' was not found.\n", 'o');
}
return 0;
}
现在的输出结果为:
'o' was found at position 4.
如何在一个字符串中查找多个字符?
要在一个字符串中查找多个字符,我们可以使用strpbrk()库函数。
strpbrk()函数是什么?
C库函数char *strpbrk(const char *str1, const char *str2)搜索str1中的第一个出现在str2中的字符,并返回一个指向该字符的指针。如果未找到任何字符,则返回一个空指针。两个字符串中的字符都按照它们在字符集中的顺序被处理。
char *strpbrk(const char *str1, const char *str2);
参数
str1 - 要检索的C字符串。
str2 - 包含要搜索的字符的C字符串。
返回值
该函数返回指向str1中第一个出现在str2中的字符的指针,如果未找到任何字符,则返回一个空指针。
下面是一个strpbrk()函数的示例代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *result = NULL;
result = strpbrk(str, "oe");
if(result)
{
printf("'%c' was found at position %ld.\n", *result, result - str);
}
else
{
printf("'%c' was not found.\n", 'o');
}
return 0;
}
上面的代码输出:
'o' was found at position 4.
我们还可以使用循环来找到字符串中所有指定字符的位置:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *result = NULL;
result = strpbrk(str, "ol");
while(result != NULL)
{
printf("'%c' was found at position %ld.\n", *result, result - str);
result = strpbrk(result + 1, "ol");
}
return 0;
}
如上代码的输出:
'o' was found at position 4.
'l' was found at position 2.
'l' was found at position 3.
'l' was found at position 9.
如何查找指定字符在字符串中的最后一个位置?
要查找指定字符在字符串中的最后一个位置,可以使用strrchr()函数。
strrchr()函数是什么?
C库函数char *strrchr(const char *str, int c)在字符串str中返回字符c最后一次出现的位置,如果未找到该字符,则返回NULL。strrchr()与strchr()函数类似,但是它查找字符串中最后一个匹配的字符,而不是第一个匹配。
char *strrchr(const char *str, int c);
参数
str - 要搜索的C字符串。
c - 匹配的字符。
返回值
如果找到所查字符,则返回字符在str中最后一次出现的位置的指针,如果未找到该字符,则返回空指针。
下面是一个使用strrchr()函数查找指定字符在字符串中的最后一个位置的示例:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *result = NULL;
result = strrchr(str, 'o');
if(result)
{
printf("'%c' was found at position %ld.\n", *result, result - str);
}
else
{
printf("'%c' was not found.\n", 'o');
}
return 0;
}
上面的代码输出:
'o' was found at position 7.
注意事项
在使用strchr()或strrchr()函数时,我们应该确保输入参数指向的缓存区是足够大的,否则可能会导致内存泄漏或其它错误。
结论
在C语言中,我们可以使用strchr()函数来查找字符串指定字符,使用strpbrk()函数来查找字符串中多个指定字符的位置,使用strrchr()函数查找指定字符在字符串中的最后一个位置。