名前空間
変種
操作

memchr

From cppreference.com
< c‎ | string‎ | byte
ヘッダー <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 を含む、修飾されていないオブジェクト型とします。
  • ptrconst T* 型の場合、戻り値の型は const void* になります。
  • それ以外の場合、ptrT* 型の場合、戻り値の型は void* になります。
  • それ以外の場合、動作は未定義です。
これらの汎用関数のマクロ定義が抑制され、実際の関数にアクセスできる場合(例えば、(memchr) または関数ポインタが使用される場合)、実際の関数宣言 (1) が表示されます。

検索対象の配列の末尾を超えてアクセスした場合の動作は未定義です。ptr がヌルポインタである場合の動作は未定義です。

この関数は、バイトを順番に読み取り、一致するバイトが見つかり次第停止するように動作します。ptr が指す配列が count よりも小さい場合でも、配列内で一致が見つかった場合の動作は明確に定義されています。

(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

最初に出現する文字を見つける
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)