string.h 함수 정리 (형식/기능)
함수명 |
형식 / 기능 |
strlen() |
unsigned strlen( const char *str ) |
str의 문자열 길이를 반환 | |
strcat() |
char *strcat( char *str1, const char *str2 ) |
str1의 문자열에 str2의 문자열을 연결 | |
strncat() |
char *strncat( char *str1, const char *str2, unsigned c ) |
str1의 문자열에 str2 문자열의 선두 c개의 문자를 연결 | |
strcmp() |
char *strcmp( char *str1, const char * str2 ) |
str1의 문자열과 str2를 서로 부호 없는 비교, | |
strncpm() |
char *strncpm( char *str1, const char *str2, unsigned c ) |
str1 문자열의 선두 c개의 문자와 str2의 문자열을 비교 | |
strcpy() |
char *strcpy( char *str1, const char *str2 ) |
str1의 문자열에 str2의 문자열을 복사, str1의 값을 반환함. | |
strncpy() |
char *strncpy( char *str1, const char *str2, unsigned c ) |
str1의 문자열에 str2 문자열의 선두 c개의 문자를 복사 | |
strstr() |
char *strstr( const char *str1, const char *str2 ) |
문자열 str2가 문자열 str1에서 처음 일치하는 위치를 알려준다. 만약 문자열이 발견 되면 str1에 있는 그 문 자열의 포인터를 반환한다. 그 외에는 NULL 포인터를 반환한다. | |
strerror() |
char *strerror( int num ) |
오류번호 num을 받아 해당하는 오류 메시지를 반환 | |
strpbrk() |
char *strpbrk( char *str1, const char *str2 ) |
지정한 str1의 문자열에서 str2의 문자열에 포함된 어떤 문자를 찾고 위치 포인터를 반환 | |
strrchr() |
char *strrchr( const char *str, int c ) |
문자열 str에서 c가 마지막으로 나타나는 위치를 알려준다. c가 발견되면 c의 포인터 를 반환한다. 그 외에는 NULL포인터를 반환한다. | |
strcspn() |
char *strcspn( char *str, const char *str2 ) |
str1의 문자열에서 str2의 문자열에 포함된 문자가 첫 번째 나타날 때 까지의 문자수 | |
strspn() |
char *strspn( char *str1, const char str2 ) |
str1의 문자열에서 str2의 문자열에 포함되지 않은 문자가 첫 번째 나타날 때까지의 문자수 | |
strtok() |
char *strtok( char *str1, const char *str2 ) |
일련의 strtok 호출은 문자열 str1을 문자열 str2가 가지고 있는 문자로 구분되는 '토큰'으로 나눈다. 첫 번째 호출은 첫 번째 인수인 str1을 사용하여 두 번째 호출부터는 NULL을 첫 번째 인수로 사용한다. 매 호출마다 현재 토큰의 포인터를 반환한다. 더 이상 토큰이 없으면 NULL을 반환한다 . | |
strupr() |
char *strupr( char *str ) |
지정한 str의 문자열 중 소문자를 대문자로 변환 |
또 다른 글 =============================================================================================
stpcpy
원형 : char *stpcpy( char *dest, char *src );
헤더 : string.h
기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.
리턴 : dest + strlen(src)의 번지를 리턴
strcat
원형 : char *strcat( char *dest, const char *src );
헤더 : string.h
기능 : 문자열끼리 연결한다. dest의 널문자 위치에 src가 붙는다. dest의 길이가 ( dest 문자열 + src 문자열 ) 길이보다 작을 경우 인접 데이터가 파괴된다.
리턴 : dest의 번지가 리턴
strchr
원형 : char *strchr( const *src, int c );
헤더 : string.h
기능 : 문자열 배열 src 내에 문자 c가 있는지 검사하고 있을 경우 문자 c가 있는 번지를 리턴. 널문자도 문자로 취급하기 때문에 널문자를 넣으면 첫번째 널문자의 번지를 리턴한다.
리턴 : 문자열 src내에서 발견된 문자 c의 포인터. 발견되지 않을 경우 NULL 리턴
strcmp
원형 : int strcmp( const char *src1, const char *src2 );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교함. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strcmpi
원형 : int strcmpi( const char *src1, const char *src2 );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교함. 하지만 대소문자를 구분하지 않는다. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strcoll
원형 : int strcoll( char *src1, char *src2 );
헤더 : string.h
기능 : setlocale 함수에 의해 지정된 비교방식에 따라 두 개의 문자열을 비교
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strcpy
원형 : char *strcpy( char *dest, const char *src );
헤더 : string.h
기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.
리턴 : dest의 번지가 리턴
strcspn
원형 : size_t strcspn( const char *src1, const char *src2 );
헤더 : string.h
기능 : 문자열 src1 중에 문자열 src2에 들어 있지 않은 문자들이 연속해 있는 길이를 구한다. 문자열 s2에 없는 문자들로 구성되어 있는 문자열 s1 내의 세그먼트를 찾아내고 그 세그먼트의 길이를 리턴.
예를 들어 src1 = "123456" 이고 src2 = "0486" 이라면 src1 내에서 src2 의 문자인 4가 나오기 전까지의 길이인 3을 리턴한다.
리턴 : 찾아낸 세그먼트의 길이. 만약 0을 리턴한다면 세그먼트가 발견되지 않은 것이다.
strdup
원형 : char *strdup( const char *src );
헤더 : string.h
기능 : 새로운 메모리를 할당하고 문자열 src를 복사한 후 그 포인터를 리턴한다. 종료 시 반드시 복제된 문자열은 메모리를 해제해 주어야 한다.
리턴 : 복제된 문자열의 포인터를 리턴. 메모리 할당에 실패한 경우 NULL을 리턴.
_strerror
원형 : char *_strerror( const char *src );
헤더 : string.h, stdio.h
기능 : 사용자가 정의하는 에러 메시지를 만든다. src가 NULL일 경우 최근 발생한 에러 메시지만으로 구성된 문자열을 만들고 src가 NULL이 아닌 경우 에러메시지 형식의 문자열을 만든다.
만약 src 가 "babo" 이면 babo : 최근 에러 메시지 같은 형식으로 문자열을 만든다.
리턴 : 만들어진 에러 문자열의 포인터를 리턴한다.
strerror
원형 : char *strerror( int errnum );
헤더 : stdio.h
기능 : errnum에 해당하는 에러메시지 문자열을 만든다. 에러메시지 문자열은 모두 \n으로 끝나므로 개행 문자를 첨가해 줄 필요는 없다.( 에러 메시지는 이미 정의되어 있으므로 궁금하면 출력시켜보자)
리턴 : 에러메시지 문자열의 포인터
stricmp
원형 : int stricmp( const char *src1, const char *src2 );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교함. 하지만 대소문자를 구분하지 않는다. 이 함수를 사용하여 두 개의 문자열이 같은 문자열인지 아닌지를 비교할 수 있다. 같을 경우 0, 다를 경우 양수나 음수의 값을 리턴. 이 함수를 매크로로 정의해 둔 함수가 strcmpi 이다.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strlen
원형 : size_t strlen( const char *src );
헤더 : string.h
기능 : 문자열 src 의 길이를 계산한다. 널문자는 길이에 포함되지 않고 널문자 앞에 까지 문자 개수를 리턴한다.
리턴 : 문자열의 길이
strlwr
원형 : char *strlwr(char *src);
헤더 : string.h
기능 : 문자열 src 내의 대문자(A~Z)를 소문자(a~z)로 변경한다. 영문자 외의 다른 문자는 변경하지 않는다.
리턴 : 인수로 주어진 src를 그대로 리턴
strncat
원형 : char *strncat( char *dest, const char *src, size_t maxlen );
헤더 : string.h
기능 : dest 의 널문자에 src의 문자열을 붙이는데 maxlen 길이 만큼만 붙인다.
리턴 : dest의 번지를 리턴
strncmp
원형 : int strncmp( const char *src1, const char *src2, size_t maxlen );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분한다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strncmpi
원형 : int strncmpi( const char *src1, const char *src2, size_t maxlen );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분하지 않는다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strncpy
원형 : char *strncpy( char *dest, char *src, size_t maxlen );
헤더 : string.h
기능 : 문자열을 정해진 길이만큼 복사한다. 길이만큼만 복사하기 때문에 dest의 뒤에 널문자가 붙지 않는다.
리턴 : dest의 번지를 리턴
strnicmp
원형 : int strnicmp( const char *src1, const char *src2, size_t maxlen );
헤더 : string.h
기능 : 두 개의 문자열을 대소 비교한다. 비교시 대소문자를 구분하지 않는다. 하지만 문자열 전체를 비교하는 것이 아니라 maxlen 길이 만큼만 비교한다. 이 함수의 매크로 버젼이 strncmpi 이다.
리턴 : src1 < src2 인 경우 음수 리턴
src1 = src2 인 경우 0 리턴
src1 > src2 인 경우 양수 리턴
strset
원형 : char *strset( char *src, int c );
헤더 : string.h
기능 : 문자열을 특정 문자로 채운다. 문자열 중 널문자가 발견될 때가지 문자 c 로 채운다.
리턴 : src의 번지를 리턴
strpbrk
원형 : char *strpbrk( const char *src1, const char *src2 );
헤더 : string.h
기능 : 문자열 src1 내에 문자열 src2에 있는 문자 중의 하나라도 있는지 검사하고 있을 경우 그 포인터를 리턴.
리턴 : 문자열 src1 내에 문자열 src2에 있는 문자 중 하나가 발견된 포인터를 리턴. 없을 경우 널을 리턴
strrchr
원형 : char *strrchr( const cjar *src, int c );
헤더 : string.h
기능 : 문자 배열 src내에 문자 c가 있는지 검사하고 있을 경우 문자 c가 있는 번지를 리턴한다. 하지만 앞에서 부터 검사하는 것이 아니라 뒤에서 부터 검사를 진행한다.
리턴 : 문자열 src에서 발견된 문자 c의 포인터를 리턴. 발견되지 않을 경우 널을 리턴.
strrev
원형 : char *strrev( char *src );
헤더 : string.h
기능 : 문자열의 순서를 바꾼다. 즉 제일 앞에 있는 문자가 제일 뒤로 가고 제일 뒤의 문자가 제일 처음으로 옮겨진다. 널문자는 이동 없음.
리턴 : 역순으로 바꾼 문자열의 src번지
strspn
원형 : size_t strspn( const char *src1, const char *src2 );
헤더 : string.h
기능 : 문자열 src1 중에서 문자열 src2에 있는 문자들이 연속해 있는 길이를 구한다.
예를 들어 src1 = "12345678" 이고 src2 = "143290" 이라면 src1에서 src2의 문자들을 찾아보면 1234가 있다. 이 문자열의 길이 4를 리턴한다.
리턴 : 찾아낸 세그먼트의 길이를 리턴. 만약 0을 리턴하면 세그먼트를 찾지 못한 것이다.
strstr
원형 : char *strstr( const char *src1, const char *src2 );
헤더 : string.h
기능 : 문자열 src1내에서 문자열 src2가 포함되어 있는지 검사하고 있다면 src2와 같은 문자열이 있는 부분을 리턴한다.
리턴 : 부분문자열의 선두 번지. 없다면 널을 리턴
strtod
원형 : double strtod( const char *src1, char **endptr );
헤더 : stdlib.h
기능 : 문자열을 double 형 부동 소수점으로 바꾼다. 문자열은 다음과 같은 구조로 이루어져야 한다.
[공백,탭][부호][숫자][소수점][e] -> ex) -5.64e+5, -3.6924
순서를 어기거나 불필요한 문자가 중간에 있을 경우는 변환이 중지.
endptr 인수는 변환이 중지될 경우 중지된 문자를 가리키므로 에러 검색에 사용
리턴 : 변환된 double 형 실수를 리턴. overflow 발생시 HUGE_VAL을 리턴
strtok
원형 : char *strtok( char *src1, char *src2 );
헤더 : string.h
기능 : 문자열에서 token을 찾아낸다. ( token 이란 특정한 구분자로 분리되는 문장 구성 요소이다. 구분자가
"/"라 할때 다음 문자열은 1994와 Feb와 20의 세 개의 token 으로 분리된다. "1994/Feb/20" )
문자열 src1이 token을 찾아낼 문자열이며 src2가 token 구분자가 들어있는 문자열이다. token 구분자는 여러개가 복수 개 지정될 수 있으며 token 구분자는 strtok 호출 시 마다 바뀔 수 있다.
리턴 : 찾아낸 token의 포인터를 리턴. token이 더 이상 없을 경우 널 리턴.
( 이해가 안가는 분은 winapi에서 예제를 참고)
strtol
원형 : long strtol( const char *src1, char **endptr, int radix );
헤더 : stdlib.h
기능 : 문자열을 long 형 정수로 변환한다.문자열 src1은 다음과 같은 구조로 이루어져야 한다.
[공백, 탭][부호][숫자]
만약 이 순서를 어기거나 불필요한 문자가 문자열 내에 있을 경우 변환은 중지되고 중지된 위치가 endptr에 설정된다. endptr은 에러 검색에 사용하면 용이. 그리고 radix은 문자열을 해석할 진법을 지정할 때 사용되는데 범위는 2~36 까지 이고 그 진법에서 사용되는 문자만 인식
리턴 : 변환된 long 형 정수를 리턴. 변환이 불가능할 경우 0을 리턴
strtoul
원형 : unsigned long strtoul(const char *src1, char **endptr, int radix );
헤더 : string.h
기능 : 문자열을 부호없는 long 형 정수로 바꾼다. 사용법은 strtol 과 동일.
리턴 : 변환된 unsigned long 형 정수를 리턴. 변환이 불가능할 경우 0을 리턴
strupr
원형 : char *strupr( char *src );
헤더 : string.h
기능 : 문자열 src내의 소문자 (a~z)를 대문자( A~Z)로 변환한다. 영문자 외의 다른 문자는 변경하지 않는다.
리턴 : src의 번지를 리턴
출처&참조 : www.winapi.co.kr