memchr
From 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) 指定されたオブジェクトの最初の count バイト(各バイトは unsigned char として解釈される)の中から、(unsigned char)ch の最初の出現箇所を探します。
2) 型に依存しない汎用関数で、(1) と同等です。
T は、void を含む、修飾されていないオブジェクト型とします。ptrが const T* 型の場合、戻り値の型は const void* になります。- それ以外の場合、
ptrが T* 型の場合、戻り値の型は void* になります。 - それ以外の場合、動作は未定義です。
検索対象の配列の末尾を超えてアクセスした場合の動作は未定義です。ptr がヌルポインタである場合の動作は未定義です。
|
この関数は、バイトを順番に読み取り、一致するバイトが見つかり次第停止するように動作します。 |
(C11 以降) |
目次 |
[編集] Parameters
| ptr | - | 検査対象のオブジェクトへのポインタ |
| 文字 | - | 検索するバイト |
| count | - | 調べる最大バイト数 |
[編集] Return value
バイトの位置へのポインタ。そのようなバイトが見つからなかった場合はヌルポインタ。
[編集] Example
このコードを実行
#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
[編集] References
- 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 関数
[編集] See also
| 最初に出現する文字を見つける (関数) | |
| C++ ドキュメント (memchr)
| |