문자형(char) 배열과 문자열

C 언어의 문자열 표현

  • C언어에서의 문자열은 일련의 문자들 + 끝을 알리는 널 문자(\0)로 구성된다.
  • 즉 문자열은 char 자료형으로 구성된 배열로 표현할 수 있다.

끝문자 null을 포함해야 하므로, 원래 표현하려는 문자열 길이의 +1 만큼의 크기를 가진다는 점을 주의!

1
2
문자열 Hello World!
--> 'H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd' '!' '\0'

char형 배열 선언과 초기화

기본적인 선언 방법

1
2
3
4
5
6
7
char 배열명[배열크기];
char 배열명[배열크기] = {1, 2, ...};
char 배열명[] = {1, 2, ...};
char 배열명[] = "문자열";

char str[12]; // 11개의 문자를 담을 수 있음 (마지막은 null 문자)
char str[] = "Hello World!";

배열의 크기 지정 여부

  • 배열의 크기를 지정할 수도 있고, 지정하지 않을 수도 있다.
1
2
char str[13] = "Hello World!";
char str[] = "Hello World!";

문자열 단위로 초기화

1
char str[] = "Hello World!";
1
2
str --> |H|e|l|l|o| |W|o|r|l|d|!|\0|
         1 2 3 4 5 6 7 8 9 10 11 12

문자 단위로 초기화

  • 문자 단위로 초기화할 때에는 반드시 마지막에 널 문자(\0)를 추가해야 한다.
1
2
char str[] = {'H', 'e', 'l', 'l', 'o', ' ',
              'W', 'o', 'r', 'l', 'd', '!', '\0'};
1
2
str --> |H|e|l|l|o| |W|o|r|l|d|!|\0|
         1 2 3 4 5 6 7 8 9 10 11 12

문자열 크기보다 작은 크기의 배열을 선언할 경우

  • 배열의 크기만큼 문자가 저장된다.
1
char str[5] = "Hello World!";
1
2
str --> |H|e|l|l|o|
         1 2 3 4 5

문자열 크기보다 큰 크기의 배열을 선언할 경우

  • 배열의 크기만큼 문자가 저장된다.
  • 나머지 부분은 null 문자(\0)로 초기화된다.
1
2
3
4
5
void str_underflow() {
    char str[20] = "Hello World!";
    printf("%s\n", str);
    printf("%d\n", str[18]);
}
1
2
Hello World!
0

Reference

C 프로그래밍 (김형근, 곽덕훈, 정재화 공저)
C 프로그래밍 강의 (방송통신대 - 이병래)

Comments