본문으로 바로가기
728x90
반응형

c언어를 사용하시거나 해보셨던 분들은 대부분 memcpy, memset 함수를 사용해보셨을 텐데요.

 

해당 함수를 사용하기 위해서는 String.h 파일을 포함시켜줬던 기억이 나실겁니다.

요렇게요

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

int main(){
  char buffer[20];

  memset(buffer, 0, 20);			<= buffer memory를 초기화
  memcpy(buffer, "hello world!!\n", 14);	<= buffer memory에 hello world!!\n 를 복사

  printf("%s", buffer);

  return 0;
}

 

자주 사용하는 함수들 말고 string.h 헤더 파일 안에 어떤 함수들이 존재하는 지 다 알고 있는 사람이 몇 있을까요?

 

그래서 한번 string.h 헤더 파일을 정리 해봤습니다. (C언어 래퍼런스 찾기가 힘드네요 ㅠㅠ)

 

<string.h>

파일 위치

기본적으로 리눅스에서는 /usr/include 파일 안에 헤더 파일이 존재합니다.

/usr/include 파일 안에 없다면 찾아보는게 좋겠죠? 

리눅스(LINUX) - 파일 및 디렉토리 찾기 (find)

 

리눅스(LINUX) - 파일 및 디렉토리 찾기 (find)

Find 명령어 GUI 기반인 윈도즈와는 달리 리눅스에서는 Terminal을 사용하기 때문에 파일 및 디렉터리를 찾기가 쉽지 않습니다. 이럴 때 find 명령어를 잘 사용한다면 사용 편의성이 좋아집니다. find

idsn.tistory.com

 

함수의 종류 

익히 알고 있던 함수들 말고도 유용한 함수들이 많이 있네요. 

자세한 사항은 함수 이름을 클릭하시면 확인하실 수 있어요.

(자세한 내용들은 차근차근 포스팅할 예정입니다.)

함수 이름 함수 원형 설명
※ 문자열 복사 함수
memcpy void * memcpy ( void * des, const void * src, size_t num); src에서부터 num만큼을 des으로 복사
memmove void * memmove ( void * des, const void * src, size_t num); src에서부터 num만큼을 des으로 이동
strcpy char * strcpy ( char * des, const char * src); src를 des에 복사
strncpy char *strncpy( char * des, const char * src, size_t num); src에서부터 num만큼을 des으로 복사
strdup char * strdup(const char *st1); str1을 복사하고 memory를 할당하여 주소를 반환
문자열 병합 함수
strcat char * strcat ( char * des, const char * src); des 뒤에 src를 붙인다.
strncat char * strncat ( char * des, char * src, size_t num); des 뒤에 src의 num 갯수만큼 붙인다.
문자열 비교 함수
memcmp int memcmp ( const void * ptr1, const void * ptr2, size_t num); ptr1과 ptr2를 num byte 만큼 비교한다.
strcmp int strcmp ( const char * str1, const char * str2); str1과 str2를 비교한다.
strcoll int strcoll ( const char * str1, const char * str2); strcmp와 동일하지만 LC_COLLATE에 정의된 방식에 따라 비교한다.
strncmp int strncmp ( const char * str1, const char * str2, size_t num); str1과 str2를 num byte 만큼 비교한다.
strxfrm size_t strxfrm ( char * des, const char * src, size_t num); src를 locale 정보에 따라 변환 후 des에 num byte 만큼 복사한다.
문자열 탐색 함수
memchr void * memchr ( const void * ptr, int value, size_t num); ptr에서 num byte까지 중 value 와 처음으로 일치하는 주소 반환
strchr char * strchr ( const char * str, int c); str에서 c와 일치하는 문자의 주소 반환
strcspn size_t strcspn ( const char * str1, const char * str2); str1에서 str2의 문자들을 찾아 일치하는 문자의 처음을 반환
strpbrk char * strpbrk ( const char * str1, const char * str2); str1에서 str2의 문자들을 찾아 일치하는 문자의 처음을 반환
strrchr char * strrchr ( const char * str, int c); str에서 마지막으로 c와 일치하는 문자의 주소 반환
strspn size_t strspn ( const char * str1, const char * str2); str1에서 str2의 문자들이 아닌 문자의 처음 위치를 반환
strstr char * strstr ( const char * str1, const char * str2); str1에서 str2를 검색하여 가장 먼저 나타나는 곳을 반환
strtok char * strtok ( char * str, const char * delim); str을 delim 문자로 분리한다.
strtok_r char *strtok_r(char *str, const char *delim, char **pos); str을 delim 문자로 분리한다.
strsep char *strsep(char **str, const char *delim); str을 delim 문자로 분리한다.
기타
memset void * memset ( void * ptr, int value, size_t num); ptr에서 num byte 만큼 value 값으로 채운다.
strerror char * strerror ( int errnum ); errnum을 해석하고 그에 맞는 에러 문자열을 포인터에 반환한다.
strlen size_t strlen ( const char * str ); 문자열의 길이 반환

 

반응형