memchr
来自 cppreference.com
定义在头文件 <string.h> 中 |
||
void* memchr( const void* ptr, int ch, size_t count ); |
(1) | |
/*QVoid*/ *memchr( /*QVoid*/ *ptr, int ch, size_t count ); |
(2) | (自 C23 起) |
1) 在由 ptr 指向的对象的初始 count 个字节(每个字节都解释为 unsigned char)中查找 (unsigned char)ch 的第一次出现。
2) 与 (1) 等效的类型泛型函数。令
T
为无限定的对象类型(包括 void)。- 如果
ptr
的类型为 const T*,则返回类型为 const void*。 - 否则,如果
ptr
的类型为 T*,则返回类型为 void*。 - 否则,行为未定义。
- 如果
如果访问超出所搜索数组的末尾,则行为未定义。如果 ptr 是空指针,则行为未定义。
此函数的行为就好像按顺序读取字节并一找到匹配字节就停止:如果由 ptr 指向的数组小于 count,但匹配在数组中找到,则行为定义明确。 |
(自 C11 起) |
内容 |
[编辑] 参数
ptr | - | 指向要检查的对象的指针 |
ch | - | 要搜索的字节 |
count | - | 要检查的最大字节数 |
[编辑] 返回值
指向字节位置的指针,如果未找到此类字节,则为空指针。
[编辑] 示例
运行此代码
#include <stdio.h> #include <string.h> int main(void) { const char str[] = "ABCDEFG"; const int chars[] = {'D', 'd'}; for (size_t i = 0; i < sizeof chars / (sizeof chars[0]); ++i) { const int c = chars[i]; const char *ps = memchr(str, c, strlen(str)); ps ? printf ("character '%c'(%i) found: %s\n", c, c, ps) : printf ("character '%c'(%i) not found\n", c, c); } return 0; }
可能的输出
character 'D'(68) found: DEFG character 'd'(100) not found
[编辑] 参考文献
- C23 标准 (ISO/IEC 9899:2024)
- 7.24.5.1 memchr 函数 (p: TBD)
- C17 标准 (ISO/IEC 9899:2018)
- 7.24.5.1 memchr 函数 (p: 267-268)
- C11 标准 (ISO/IEC 9899:2011)
- 7.24.5.1 memchr 函数 (p: 367)
- C99 标准 (ISO/IEC 9899:1999)
- 7.21.5.1 memchr 函数 (p: 330)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.11.5.1 memchr 函数
[编辑] 另请参阅
查找字符的第一次出现 (函数) | |
C++ 文档 用于 memchr
|