memchr
From cppreference.net
|
定义于头文件
<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 ,但在数组范围内找到匹配项,则行为是明确定义的。 |
(since 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 函数 (页: 267-268)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.24.5.1 memchr 函数 (页: 367)
- C99标准(ISO/IEC 9899:1999):
-
- 7.21.5.1 memchr函数(页码:330)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.11.5.1 memchr 函数
参见
|
查找字符的首次出现
(函数) |
|
|
C++ 文档
关于
memchr
|
|