C 库 - memchr() 函数



C 库函数 memchr() 类型为 void,接受三个参数,在参数 str 指向的字符串的前 n 个字节中搜索字符 c(一个无符号字符)的第一次出现。

语法

以下是 C 库 memchr() 函数的语法:

void *memchr(const void *str, int c, size_t n)

参数

此函数接受以下参数:

  • str − 这是执行搜索的内存块的指针。

  • c − 此值为 int 类型,但函数使用此值的无符号字符转换执行逐字节搜索。

  • n − 这是要分析的字节数。

返回值

如果字符在给定的内存区域中不存在,则此函数返回指向匹配字节的指针或 NULL。

示例 1

以下是 C 库程序,用于演示 memchr() 函数。

#include <stdio.h>
#include <string.h>
int main () 
{
   const char str[] = "Tutorialspoint";
   const char ch = '.';
   char *ret;
   ret = memchr(str, ch, strlen(str));
   printf("String after |%c| is - |%s|\n", ch, ret);
   return(0);
}

输出

以上代码产生以下输出:

String after |.| is - |.tutorialspoint.com|

示例 2

该程序使用 memchr() 比较两个字符串,并确定它们是否相等。

#include <stdio.h>
#include <string.h>

int main() {
   const char str1[] = "abcdef";
   const char ch = 'd';

   char* result = (char*)memchr(str1, ch, strlen(str1));

   if (result != NULL) {
       printf("'%c' found at position %ld\n", ch, result - str1);
   } else {
       printf("'%c' not found in the string\n", ch);
   }

   return 0;
}

输出

执行上述代码后,我们得到以下输出:

'd' found at position 3

示例 3

下面的程序使用 memchr() 在给定字符串中搜索特定字符。

#include <stdio.h>
#include <string.h>

int main() {
   const char str[] = "Welcome to India";
   const char ch = 't';

   char* result = (char*)memchr(str, ch, strlen(str));

   if (result != NULL) {
       printf("'%c' found at position %ld\n", ch, result - str);
   } else {
       printf("'%c' not found in the string\n", ch);
   }
   
   return 0;
}

输出

执行上述代码后,我们得到以下输出:

't' found at position 8
广告