memchr
来自cppreference.com
在标头 <string.h> 定义 | ||
void* memchr(constvoid* ptr, int ch, size_t count ); | (1) | |
/*QVoid*/*memchr(/*QVoid*/*ptr, int ch, size_t count ); | (2) | (C23 起) |
1) 在 ptr 所指向对象的起始 count 个字节(均转译成 unsignedchar)中寻找首次出现的 (unsignedchar)ch。
2) 等价于 (1) 的泛型函数。令
T
为未限定的 对象类型(包括 void)。 - 若
ptr
类型为 const T*,则返回类型为 constvoid*。 - 否则,若
ptr
类型为 T*,返回类型为 void*。 - 否则,行为未定义。
- 若
若在所搜索的数组结尾后发生访问,则行为未定义。若 ptr 为空指针则行为未定义。
此函数表现如同它按顺序读取字节,并于找到匹配的字节时立即停止:若 ptr 所指向的字节数组小于 count,但在数组中找到匹配,则行为良定义。 | (C11 起) |
目录 |
[编辑]参数
ptr | - | 指向要检验的对象的指针 |
ch | - | 要搜索的字节 |
count | - | 要检验的最大字节数 |
[编辑]返回值
指向字节位置的指针,或若找不到该字节则为空指针。
[编辑]示例
运行此代码
#include <stdio.h>#include <string.h> int main(void){constchar str[]="ABCDEFG";constint chars[]={'D', 'd'};for(size_t i =0; i <sizeof chars /(sizeof chars[0]);++i){constint c = chars[i];constchar*ps = memchr(str, c, strlen(str)); ps ?printf("找到字符 '%c'(%i): %s\n", c, c, ps):printf("未找到字符 '%c'(%i)\n", c, c);}return0;}
可能的输出:
找到字符 'D'(68): DEFG 未找到字符 'd'(100)
[编辑]引用
- C23 标准(ISO/IEC 9899:2024):
- 7.24.5.1 The memchr function (第 TBD 页)
- C17 标准(ISO/IEC 9899:2018):
- 7.24.5.1 The memchr function (第 267-268 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.24.5.1 The memchr function (第 367 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.21.5.1 The memchr function (第 330 页)
- C89/C90 标准(ISO/IEC 9899:1990):
- 4.11.5.1 The memchr function
[编辑]参阅
查找字符的首次出现 (函数) | |
memchr 的 C++ 文档 |