C 语言搜索函数360


在 C 语言中,搜索函数用于在一个字符串或数组中查找特定的子字符串或元素。有多个函数可用于执行此操作,包括:

strchr()

strchr() 函数查找字符串中首次出现指定字符的位置。如果找到,它返回指向该字符的指针;如果没有找到,则返回 NULL。
#include
char *strchr(const char *str, int c);

用法:
char *result = strchr("Hello world", 'o');

strstr()

strstr() 函数查找字符串中首次出现指定子字符串的位置。如果找到,它返回指向该子字符串的指针;如果没有找到,则返回 NULL。
#include
char *strstr(const char *str, const char *substr);

用法:
char *result = strstr("Hello world", "world");

strtok()

strtok() 函数将字符串拆分为以指定分隔符分隔的令牌。它返回指向第一个令牌的指针,并且可以重复调用以获取后续令牌。
#include
char *strtok(char *str, const char *delim);

用法:
char *token = strtok("Hello,world", ",");

memchr()

memchr() 函数在内存块中查找首次出现指定字符的位置。如果找到,它返回指向该字符的指针;如果没有找到,则返回 NULL。
#include
void *memchr(const void *ptr, int c, size_t n);

用法:
char *result = memchr("Hello world", 'o', strlen("Hello world"));

bsearch()

bsearch() 函数使用二分搜索算法在已排序数组中查找指定元素。如果找到,它返回指向该元素的指针;如果没有找到,则返回 NULL。
#include
void *bsearch(const void *key, const void *base, size_t num, size_t size,
int (*compar)(const void *, const void *));

用法:
// 定义比较函数
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int arr[] = {1, 3, 5, 7, 9};
int key = 5;
int *result = bsearch(&key, arr, 5, sizeof(int), compare);

fscanf()

fscanf() 函数从文件中读取格式化的输入并将其存储在变量中。它可以用来从文件中搜索特定模式或值。
#include
int fscanf(FILE *stream, const char *format, ...);

用法:
FILE *file = fopen("", "r");
int number;
fscanf(file, "%d", &number);

regexec()

regexec() 函数执行正则表达式匹配。它可以用来搜索字符串中与正则表达式模式匹配的子字符串。
#include
int regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags);

用法:
regex_t regex;
regmatch_t matches[2];
regcomp(®ex, "^Hello", REG_ICASE);
regexec(®ex, "Hello world", 2, matches, 0);

通过使用这些搜索函数,您可以轻松地查找 C 语言中字符串和数组中的特定值或模式。

2024-12-03


上一篇:C语言 getch() 函数:从控制台中获取字符而不回显

下一篇:C语言中的函数别名