ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • string.h 함수 모음
    C,C++ & Linux 2020. 4. 6. 23:23
    728x90

    void* memchr(const void* str, int c, size_t n);

    str 에서부터 n바이트 내에 있는 최초의 문자 c를 찾아주는 함수

    리턴 값 : 최초의 문자 c가 존재한다면 c가 최초로 등장하는 곳, 없다면 NULL

     

    int memcmp(const void* str1, const void* str2, size_t n);

    str1, str2 의 n바이트가 일치하는지 비교해주는 함수

    리턴값 < 0 이면 str1이 str2 보다 작음

    리턴값 > 0 이면 str2가 str1 보다 작음

    리턴값 == 0 이면 str1과 str2 가 같음

     

    void* memcpy(void* dest, const void* src, size_t n);

    src의 데이터 n바이트를 dest로 복사해주는 함수

    리턴 값 : dest

     

    void* memmove(void* dest, const void* src, size_t n);

    src의 데이터 n바이트를 dest로 복사해주는 또 하나의 함수. but src, dest 메모리가 겹쳐도 안전하게 동작한다.

    리턴 값 : dest

     

    void* memccpy(void* restrict dest, const void* restrict src, int c, size_t n);

    src의 데이터 n 바이트를 dest로 복사하되 문자 c를 만나면 c를 복사한 뒤 바로 멈춤

    리턴 값 : c를 만나 멈춘 경우 c 바로 다음 주소를 가리키는 포인터, src의 n 바이트 내에 c가 없는경우 NULL

     

    char* strcat(char* dest, const char* src);

    src 문자열을 dest 뒤에 이어 붙여주는 함수

    리턴 값 : dest

     

    char* strncat(char* dest, const char* src, size_t n);

    src 문자열 n바이트를 dest 뒤에 이어붙여주는 함수

    리턴 값 : dest

     

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

    str 내에서 최초의 문자 c를 찾아주는 함수

    리턴 값 : c가 str 내에 있으면 해당 위치를 가리키는 포인터, 없으면 NULL

     

    int strcmp(const char* str1, const char* str2);

    str1과 str2를 비교해주는 함수

    리턴값 < 0 이면 str1이 str2 보다 작음

    리턴값 > 0 이면 str2가 str1 보다 작음

    리턴값 == 0 이면 str1과 str2 가 같음

     

    int strncmp(const char* str1, const char* str2, size_t n);

    str1과 str2의 맨 처음 n 바이트를 비교해주는 함수

    리턴값 < 0 이면 str1이 str2 보다 작음

    리턴값 > 0 이면 str2가 str1 보다 작음

    리턴값 == 0 이면 str1과 str2 가 같음

     

    int strcoll(const char* str1, const char* str2);

    str1과 str2를 비교하지만 지역에 따라 설정된 LC_COLLATE 값에 의존적임

    리턴값 < 0 이면 str1이 str2 보다 작음

    리턴값 > 0 이면 str2가 str1 보다 작음

    리턴값 == 0 이면 str1과 str2 가 같음

     

    int strcoll_l(const char*, const char*, locale_t);

    str1과 str2를 비교하지만 지역에 따라 설정된 LC_COLLATE 값에 의존적임, 지역을 직접 설정 가능함

    리턴값 < 0 이면 str1이 str2 보다 작음

    리턴값 > 0 이면 str2가 str1 보다 작음

    리턴값 == 0 이면 str1과 str2 가 같음

     

    char* strcpy(char* dest, const char* src);

    src의 문자열을 dest로 복사해주는 함수

    리턴 값 : dest

     

    char* strncpy(char* dest, const char* src, size_t n);

    src의 문자열 n 바이트를 dest로 복사해주는 함수, src의 길이가 n바이트보다 짧다면 dest의 남은 부분은 null 문자로 채워진다.

    리턴 값 : 복사된 dest

     

    size_t strcspn(const char* str1, const char* str2);

    str2에 들어있지 않은 문자들로만 이루어진 str1의 최초의 구간의 길이를 구해주는 함수

    쉽게 말하면 str2에 나오는 문자들의 집합을 A라고 할 때 str1에서 A에 속한 문자가 처음으로 나오는 인덱스를 구해줌

    리턴 값 : 그렇게 구해진 구간의 길이

     

    char* strerror(int errnum);  // 보통 errnum 은 errno

    errnum에 부합하는 에러 메시지를 찾아주는 함수, 이 메시지는 플랫폼과 컴파일러에 의존적이다.

    리턴 값 : 에러 메시지가 담긴 문자열

     

    int strerror_r(int errnum, char* buf, size_t buflen);

    errnum 에 부합하는 에러 메시지를 buf에 담아주는 함수. strerror() 함수가 멀티 스레드에 안전하지 않기 때문에 대체하기 위한 함수

    리턴 값 : 성공 시 0, 에러 시 -1 (errno 설정)

     

    size_t strlen(const char* str);

    str 의 길이를 구해주는 함수, 이는 null 문자는 포함하지 않는다.

    리턴 값 : 널 문자를 제외한 문자열의 길이

     

    size_t strnlen(const char* str, size_t maxlen);

    str 의 길이를 구해주지만 그 상한 값을 지정해주는 함수이다. 이때 구해진 길이는 null 문자를 포함하지 않는다.

    리턴 값 : strlen() 결과값과 maxlen 중 작은 값

     

    char* strpbrk(const char* str1, const char* str2);

    str1 에서 str2를 구성하는 문자를 찾아주는 함수, null 문자는 찾아주지 않는다.

    리턴 값 : str2를 구성하는 문자가 str1에 있다면 해당 위치를 가리키는 포인터, 없다면 NULL

     

    char* strrpbrk(const char* str1, const char* str2);

    str1 에서 str2를 구성하는 문자를 뒤에서부터 찾아주는 함수, null 문자는 찾아주지 않는다.

    리턴 값 : str2를 구성하는 문자가 str1에 있다면 해당 위치를 가리키는 포인터, 없다면 NULL

     

    char* strrchr(const char *str, int c);

    str에서 마지막으로 등장하는 문자 c 를 찾아주는 함수

    리턴 값 : str에 문자 c가 있다면 가장 마지막으로 등장하는 c의 위치를 가리키는 포인터, 없다면 NULL

     

    size_t strspn(const char* str1, const char *str2);

    str2에 들어있는 문자들로만 이루어진 str1의 최초의 구간의 길이를 구해주는 함수

    리턴 값 : 그렇게 구해진 구간의 길이

     

    char* strstr(const char* haystack, const char* needle);

    needle 문자열이 haystack 내에서 최초로 등장하는 곳이 어디인지 찾아주는 함수. 널 문자는 제외한다.

    리턴 값 : needle 문자열이 haystack 내에 존재한다면 최초로 등장하는 곳을 가리키는 포인터, 존재하지 않으면 NULL

     

    char* strtok(char* str, const char* delim);

    str 문자열을 delim(구분자) 로 쪼개주는 함수. 쪼개어진 문자열들을 토큰이라 부른다.

    str은 이 함수를 거치면 토큰만큼 그 크기가 작아지게 된다.

    str에 NULL을 주게되면 이 전에 잘랐던 문자열에서 이어서 자르게 된다.

    리턴 값 : 더 자를 수 있는 경우 string 에서 찾아진 첫 토큰, 더 이상 남은 토큰이 없는 경우 NULL

     

    char* strtok_r(char* str , const char* delim, char** saveptr);

    str 문자열을 delim(구분자) 로 쪼개주는 함수. 쪼개어진 문자열들을 토큰이라 부른다.

    str은 이 함수를 거치면 토큰만큼 그 크기가 작아지게 된다.

    * strtok 는 자체적으로 갖고있는 static saveptr을 매개변수로 빼면서 멀티 스레드에 안전한 함수로 만들었음

    str 에 NULL을 주게 되면 savedptr에서 이어서 자르게 된다.

    리턴 값 : 더 자를 수 있는 경우 string 에서 찾아진 첫 토큰, 더 이상 남은 토큰이 없는 경우 NULL

     

    size_t strxfrm(char* dest, const char* src, size_t n);

    src 문자열을 locale 에 맞게 바꾼 문자열 n 바이트를 dest에 복사하는 함수

    리턴 값 : 널 문자를 제외한 변형된 문자열의 길이

     

    char* stpcpy(char* dest, const char* src);

    src 데이터를 dest 에 복사한다. strcpy 와 유사하지만 리턴값이 다르다.

    리턴 값 : 복사 후 dest 의 끝을 가리키는 포인터. 즉 dest + strlen(dest) 라고 생각하면 된다.

    strcat 를 연속해서 쓰는 경우에 stpcpy 를 쓰면 성능면에서 유리함

     

    char* stpncpy(char* dest, const char* src, size_t n);

    src 데이터를 dest 에 복사하는데 정확히 n개의 문자를 복사한다.

    src 의 길이가 n보다 작으면 모자란 갯수는 null 문자로 채워져서 dest에 복사되며, n보다 크거나 같으면 dest에는 널문자가 없게 된다.

    리턴 값 : 복사 후 dest 의 끝을 가리키는 포인터. 즉 dest + strlen(dest) 라고 생각하면 된다.

     

    char* strdup(const char* str);

    내부적으로 strlen(str) + 1 길이의 배열을 malloc 한 뒤 str 을 복사해주는 함수

    리턴 값 : 성공 시 heap 에 할당된 str 복사 배열, 에러 시 NULL (errno 설정)

    malloc 으로 할당된 메모리이므로 free 로 할당해줘야 한다.

     

    char* strndup(const char* str, size_t n);

    내부적으로 n + 1 길이의 배열을 malloc 한 뒤 str 을 복사해주는 함수

    리턴 값 : 성공 시 heap 에 할당된 str 복사 배열, 에러 시 NULL (errno 설정)

    malloc 으로 할당된 메모리이므로 free 로 할당해줘야 한다.

     

    char* strsignal(int sig);

    시그널에 대한 설명을 알려주는 함수이다.

    리턴 값 : 시그널에 대한 설명이 적혀있는 문자열, 이 문자열은 strsignal() 을 한 번 더 호출하면 그 값이 바뀌니 필요시 백업해야한다.

    댓글

Designed by Tistory.