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)
함수의 종류
익히 알고 있던 함수들 말고도 유용한 함수들이 많이 있네요.
자세한 사항은 함수 이름을 클릭하시면 확인하실 수 있어요.
(자세한 내용들은 차근차근 포스팅할 예정입니다.)
함수 이름 |
함수 원형 |
설명 |
※ 문자열 복사 함수 ※ |
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 ); |
문자열의 길이 반환 |