국비지원 학원 - JAVA기반 스마트앱 개발2021/프로그래밍 언어활용
문자열 비교 검색 라이브러리
KDONG
2021. 8. 7. 13:21
학습내용
- 라이브러리 함수 이해
- 라이브러리 함수 활용
학습목표
- 문자열 처리 관련 라이브러리의 종류를 설명할 수 있다.
- 문자열을 비교.검색하는 라이브러리 함수의 용도를 알고 구현할 수 있다.
라이브러리 함수 이해
1. 종류
1) 헤더파일 : string.h
(1) 비교함수
- memcmp : 메모리 블록을 비교
- strcmp : 문자열을 비교
- strncmp : 문자열 개수를 지정하여 비교
(2) 검색함수
- memchr : 메모리 블록에서 문자열 검색
- strchr : 문자열에서 찾는 문자의 첫 번째 위치
- strrchr : 문자열의 마지막에서부터 문자 위치 검색
- strspn : 문자열에서 특정 문자로 구성된 문자열의 길이
- strcspn : 문자열에서 특정 문자로 구성에 포함되지 않는 문자열의 길이
- strstr : 부분 문자열 위치
- strtok : 토큰으로 문자열 분리
라이브러리 함수 활용
1. 문자열 비교함수
1) memcmp
항목 | 내용 |
함수원형 | int memcmp ( const void * ptr1, const void * ptr2, size_t num ); |
헤더 | string.h |
기능 | 2개의 메모리 변수에 대해 내용을 비교 |
매개변수 | void * ptr1 -> 비교 대상 메모리 포인터 void * ptr2 -> 비교할 메모리 포인터 size_t num -> 비교할 바이트 크기 |
반환값 | 양의 정수 : s1이 s2보다 크다. 0 : s1과 s2가 같다. 음싀 정수 : s1보다 s2가 크다. |
2) strcmp
항목 | 내용 |
반환값 | 1 : str1 ! = str2 0 : str1 = str2 + : 결과 값이면 str1 > str2 - : 결과 값이면 str1 < str2 |
3) strncmp
항목 | 내용 |
함수원형 | int strncmp ( const char * str1, const char * str2, size_t num ); |
헤더 | string.h |
기능 | 2개의 문자열을 지정한 문자 개수까지만 비교 |
매개변수 | void * str1 -> 비교할 대상 문자열 void * str2 -> 비교할 문자열 size_t num -> 비교할 문자의 개수 |
반환값 | 1 : str1 ! = str2 0 : str1 = str2 + : 결과 값이면 str1 > str2 - : 결과 값이면 str1 < str2 |
2. 문자열 검색함수
1) memchr
항목 | 내용 |
함수원형 | void * memchr ( const void * s, int c, size_t n); |
헤더 | string.h |
기능 | 메모리 영역에서 임의의 문자를 검색하고 있으면 그 위치의 포인터를 구함 |
매개변수 | void * s -> 검사할 메모리의 포인터 int c -> 검사할 문자 코드 size_t n -> 검사할 영역의 크기 |
반환값 | 처음 발견된 위치의 포인터, 발견하지 못하면 NULL |
2) strchr
항목 | 내용 |
함수원형 | char *strchr( const char *str, int chr) |
헤더 | string.h |
기능 | 문자열에서 임의의 문자가 처음으로 발견된 위치 |
매개변수 | char *str -> 검색 대상 문자열 int chr -> 찾는 문자 |
반환값 | 찾고자 하는 문자가 발견된 첫 번째의 포인터를 반환, 찾지 못하면 NULL을 반환 |
3) strchr
항목 | 내용 |
함수원형 | char *strrchr( const char *str, int chr); |
헤더 | string.h |
기능 | 문자열에서 임의의 문자가 마지막으로 발견된 위치를 포인터로 반환(몇 번째 X) |
매개변수 | char *str -> 검색 대상 문자열 int chr -> 찾는 문자 |
반환값 | 찾고자 하는 문자가 발견된 마지막 위치의 포인터를 반환, 찾지 못하면 NULL을 반환 |
4) strspn
항목 | 내용 |
함수원형 | size_t strspn(const char *str1, const char *str2); |
헤더 | string.h |
기능 | * 문자열에서 지정된 문자들로 구성된 초기 문자열의 길이를 검색 * 검색 대상의 문자열에 대해 첫 번째 바이트부터 차례대로 검색하면서 두 번째 인수의 문자에 포함되는 문자인지를 확인 * 두 번째 인수에 포함되지 않는 문자를 맊나면 그 전까지의 문자열 길이를 반환 |
매개변수 | char *str1 -> 검색 대상 문자열 char *str2 -> 검색에 사용되는 문자들의 모임 |
반환값 | 문자열의 길이를 반환 |
5) strcspn
항목 | 내용 |
함수원형 | size_t strcspn(const char *str1, const char *str2); |
헤더 | string.h |
기능 | * 문자열에서 지정된 문자들로 구성된 초기 문자열의 위치를 검색 * 검색 대상의 문자열에 대해 첫 번째 바이트부터 차례대로 검색하면서 두 번째 인수의 문자열에 포함되는 문자인지를 확인 * 2번째 인수에 포함되는 문자를 맊나면 그전까지의 길이를 반환 |
매개변수 | char *str1 -> 검색 대상 문자열 char *str2 -> 검색에 사용되는 문자들의 모임 |
반환값 | 검색된 문자의 위치를 반환 |
6) strstr
항목 | 내용 |
함수원형 | char *strstr( const char *str1, const char *str2) |
헤더 | string.h |
기능 | 문자열에서 임의의 문자열이 시작하는 위치 |
매개변수 | char *str1 -> 검색 대상 문자열 char *str2 -> 찾는 문자열 |
반환값 | 찾고자 하는 문자열이 발견된 첫 번째 위치의 포인터를 반환, 찾지 못하면 NULL을 반환 |
7) strtok
항목 | 내용 |
함수원형 | char * strtok ( char * str, const char * delimiters ); |
헤더 | string.h |
기능 | 문자열을 문자로 자르는 함수 |
매개변수 | char *str -> 자르기 대상 문자열 char *delimiters -> 잘라내기 위한 문자 모임 |
반환값 | 잘라내기 한 문자열의 첫 번째 포인터를 반환, 문자열이 없다면 NULL을 반환 |
학습정리
1. 라이브러리 함수 이해
- 문자열 처리 관련 함수는 string.h를 include함
- 문자열 비교함수 : memcmp, strcmp, strncmp
- 문자열 검색함수 : memchr, strchr, strrchr, strspn, strcspn, strstr
- 문자열을 검색하여 분리하는 함수 : strtok
2. 라이브러리 함수 활용
- 문자열 비교함수는 첫 번째 매개변수가 더 큰 값이면 양수, 같으면 0, 두 번째 매개변수가 크면 음수를 반환
- 문자열에서 특정 문자의 위치를 검색하는 함수 : strchr, strrchr
- 문자열에서 특정 문자열의 위치를 검색하는 함수 : strst
- strtok()함수는 문자열을 토큰으로 분리