Namespaces
Variants

memchr

From cppreference.net
< 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) ( unsigned char ) ch 의 첫 번째 발생을 ptr 가 가리키는 객체의 처음 count 바이트(각각 unsigned char 로 해석됨) 내에서 찾습니다.
2) (1) 과 동등한 타입-제네릭 함수. T 를 한정자가 없는 객체 타입( void 포함)이라고 하자.
  • ptr const T * 타입인 경우, 반환 타입은 const void * 이다.
  • 그렇지 않고 ptr T * 타입인 경우, 반환 타입은 void * 이다.
  • 그 외의 경우, 동작은 정의되지 않는다.
이러한 제네릭 함수들의 매크로 정의가 실제 함수에 접근하기 위해 억제된 경우(예: ( memchr ) 또는 함수 포인터가 사용된 경우), 실제 함수 선언 (1) 이 보이게 된다.

배열 검색 범위를 벗어난 접근이 발생하면 동작은 정의되지 않습니다. 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 함수 (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 함수

참고 항목

문자의 첫 번째 발생 위치를 찾습니다
(함수)