c语言如何查找字符串指定字符

什么是字符串指定字符?

在使用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()函数查找指定字符在字符串中的最后一个位置。

后端开发标签