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 より小さい場合でも、配列内で一致が見つかれば、動作は明確に定義されています。 |
(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++ documentation
for
memchr
|
|