문자열 길이 구하기(strlen()) / 비교하기(strcmp()) / 복사하기(strcpy()) / 붙이기(strcat()) / 만들기(sprintf()) / 검색(strchr(), strrchr(), strstr())에 대해서 정리한다.
문자열 길이 구하기
- 문자열 길이를 구할때는 strlen(문자열포인터) 혹은 strlen(배열) 형식을 사용한다.
( <string.h> 헤더 파일에 정의되어 있다 )
* strlen() 함수를 이용해서 문자열의 길이를 구할때는 NULL은 길이에 포함하지 않는다.
( strlen()을 이용한 문자열 길이는 NULL 바로 앞까지의 길이를 구하는 것이다 )
문자열 비교하기
- strcmp(문자열1, 문자열2) 형식을 사용해서 두 문자열이 같은지를 비교한다.
( <string.h> 헤더 파일에 정의되어 있다 )
* ASCII 코드 기준으로 문자열2가 클때 -1(음수)를 반환
ASCII 코드 기준으로 두 문자열이 같을때는 0을 반환
ASCII 코드 기준으로 문자열1이 클 때 1을 반환
* ASCII 코드 기준으로 비교하기 때문에 대소문자 구분을 한다.
* 문자열 포인터에 NULL이 들어있으면 에러가 발생한다.
- strcmp() 함수의 반환값은 운영체제에서 제공하는 C 표준 라이브러리에 따라 달라진다.
* GCC, Clang이 리눅스, macOS에서 제공하는 표준 라이브러리를 사용하면 문자열1에서 문자열2를
빼는 규칙을 사용한다
( ASCII 코드 기준으로 계산을 해서 양수가 나오면 문자열1이 크고 음수가 나오면 문자열2가 크다.
ASCII 코드 기준으로 두문자열이 같으면 0 )
* 윈도우에서 제공하는 C 표준 라이브러리를 사용하면 Visual Studio와 같은 반환 값 규칙을 가진다 ( 0, 1, -1을 반환)
문자열 복사하기
- strcpy(대상문자열, 원본문자열) 형식을 이용한다.
( 마지막에 NULL 문자까지 복사된다 )
- <string.h> 헤더 파일에 정의되어있다.
- 보안경고로 컴파일에러가 발생하기 때문에 _CRT_SECURE_NO_WARNINGS를 넣어준다. (Visual Studio)
( 배열 형태의 문자열 복사 )
( 배열 형태의 문자열을 문자열 포인터에 복사 )
문자열 붙이기
- strcat(최종문자열, 붙일문자열) 형식을 사용한다.
- <string.h> 헤더 파일에 정의되어있다.
- 마찬가지로 보안경고로 컴파일 에러가 발생해서 _CRT_SECURE_NO_WARNINGS를 넣어준다. ( Visual Studio )
!! 최종문자열의 크기는 최소한 원래 있는 문자열에 붙일문자열의 크기만큼 더 있어야 한다.
( 배열 형태의 문자열 복사하기 )
( 배열 형태의 문자열을 문자열 포인터에 붙이기 )
문자열 만들기
- sprintf(배열, 서식, 값) 형식을 사용한다.
( 값에는 직접 값을 입력 할수도 있지만 변수도 이용 가능하다 )
- 서식을 지정해서 문자열을 만들고 그 값을 배열에 저장할 수 있다.
- <stdio.h> 헤더 파일에 정의되어 있다.
- sprintf() 함수도 Visual Studio에서는 보안 경고가 발생
( sprintf 함수를 사용해서 배열 형태로 문자열 )
( sprintf 함수를 사용해서 문자열 포인터에 문자열 만들기 )
문자열 검색
- 특정 문자열을 검색하려면 strchr(대상문자열, 검색할문자) 형식을 이용한다.
( <string.h> 헤더 파일에 정의 되어있다 )
- 문자열의 오른쪽 끝부터 문자로 검색하려면 strrchr(대상문자열, 검색할문자) 형식을 사용한다.
( 마찬가지로 <string.h> 헤더 파일에 정의되어 있다 )
- 문자열에서 문자열을 검색하는 방법은 strstr(대상문자열, 검색할문자열) 형식을 사용한다.
( <string.h> 헤더 파일에 정의 )
- 위 3가지 함수 모두 특정문자열을 찾으면 해당 문자로 시작하는 문자열의 포인터를 반환하고,
문자가 없으면 NULL을 반환한다.
* strchr(), strrchr(), strstr() 함수 모두 검색할 문자의 대소문자를 구분한다.
* NULL 문자로 해당 문자열의 끝을 구분하기 때문에 해당 문자나 문자열을 찾으면 NULL 문자를 만나기전까지의
값에 대한 포인터 주소를 반환한다.
( strchr 함수로 문자 검색 )
( strrchr 함수로 문자 검색 )
( strstr 함수로 문자열 검색 )
'프로그래밍 > C' 카테고리의 다른 글
[C언어] 문자열 자르기( strtok() ) / 문자열과 숫자 서로 변환하기 ( atoi(), strtol(), atof(), strtof() ) / 회문 판별, N-gram 만들기 (0) | 2017.10.19 |
---|---|
[C 언어] 포인터와 배열 응용 / 문자와 문자열 포인터( 문자열 사용하기 ) / 배열 형태로 문자열 선언 / 입력 값을 문자열에 저장 (0) | 2017.10.16 |
[C언어] 배열 / 2차원 배열 (0) | 2017.10.14 |
[C언어] 중첩 반복문 / goto 제어문 / FizzBuzz 문제 / 포인터 / 메모리 사용 (0) | 2017.10.14 |
[c언어] 반복문( for, while, do.. while ) / 반복문 제어( break, continue ) (0) | 2017.10.13 |
댓글