자료구조

문자열 - 1

blesslee 2022. 11. 17. 10:27
반응형

C언어에서 문자열은 char 타입의 배열의 각 칸마다 문자를 저장하여 사용한다.

 

str[6] 배열에 문자열을 저장

문자열의 마지막에는 '\0' 의 null character 로 문자열의 끝을 표시해야한다.

해당 값이 들어가야 하므로 실제 저장할 문자열보다 배열의 크기를 1크게 생성하여야 한다.

만약 str[5] 에 길이 5의 문자열을 저장한다면 출력시에 문제가 생긴다.

 

//str0.c

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

int main() {

        char word[5];
        word[0] = 'h';
        word[1] = 'e';
        word[2] = 'l';
        word[3] = 'l';
        word[4] = 'a';

        printf("%s \n", word);
}
//str0 실행결과

 

C 언어에서는 문자열을 저장하는 3가지 방법이 있다.

 

첫번째 방법은 위의 예제처럼 특정 크기의 배열을 생성한 후 각 배열에 문자를 넣어 문자열을 저장하는 방법.

 

두번째 방법은

 

char str[] = "hello";

 

위와 같이 배열의 크기를 지정하지 않고 저장할 문자열을 입력하는 방식이다.

C 언어 내부적으로 배열의 초기화를 진행하여 문자열을 저장한다.

 

세번째 방법은

 

char *str = "hello";

 

위와 같이 저장할 경우에는 해당 문자열의 수정이 불가능하다.

(string literal)

 

//str1.c
#include <stdio.h>
#include <string.h>

int main() {

        char word[10];
        word[0] = 'h';
        word[1] = 'e';
        word[2] = 'l';
        word[3] = 'l';
        word[4] = 'a';
        word[5] = '\0';

        printf("%s \n", word);

        char word2[] = "hello";
        char *word3 = "hello";

        printf("%s \n", word2);
        printf("%s \n", word3);

}
//str1 결과값

 

문자열을 이용하기 위해서는 소스 위에 string.h 헤더파일 선언이 필요하다.

해당 헤더파일 라이브러리에 포함된 함수는 다음과 같다.

 

함수명 기능
strcpy 문자열 복사
strlen 문자열 길이
strcat 문자열 합치기
strcmp 문자열 비교
strdup 문자열을 복제하여 그 주소를 반환(C표준은 아님)
반응형