C언어/string.h

[C언어] strchr 함수 (문자열에서 문자 검색)

아무일도없었다 2022. 12. 22. 12:03

사용범위

Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수

기능

C언어 표준 함수로 문자열에서 특정 문자의 첫 번째 위치를 찾을 때 사용한다.

헤더

#include <string.h>

※ strchr 함수 사용 시 string.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※


함수

char *strchr(const char *str, int val);

파라미터

  • const char *str
    • 특정 문자를 검색할 문자열 버퍼를 입력한다.
  • int val
    • 문자열 버퍼에서 검색할 문자를 입력한다.

반환값 (return)

문자(val) 을 찾은 경우            문자열에서 val 의 첫 번째 위치의 포인터를 반환
문자(val) 을 찾지 못한 경우    NULL 을 반환

잡학지식

strchr 함수는 검색하는 string 버퍼의 size 를 입력받지 않는다.

다시 말해 strchr 내부에서 문자열의 종료를 나타내는 NULL 문자를 확인하고 있는 것이다.

 

따라서 입력하는 str 파라미터는 반드시 NULL 문자가 ('\0) 포함되어야 한다.

 

NULL 문자가 포함되어있지 않거나 확신을 할 수 없는 버퍼의 검색을 진행하는 경우 memchr 함수를 사용해야 한다.


 

<소스 코드>

#include <stdio.h>
#include <string.h>

int main() {
    char buffer[] = "strchr example source code";
    char find_chr = 'e';
    char *tmp = NULL;
    char *ret = NULL;

    tmp = buffer;

    do {
        ret = strchr(tmp, find_chr);
        if(ret) {
            printf("ret(%p) : [%s]\n", ret, ret);
        }
        // next char
        tmp = ret + 1;
    } while(ret);

    return 0;
}

(string 에서 문자 'e' 를 순차적으로 검색)

 

※ 실행 결과

ret(000000000061FDB7) : [example source code]
ret(000000000061FDBD) : [e source code]
ret(000000000061FDC4) : [e code]
ret(000000000061FDC9) : [e]

 

반응형