C언어와 문자열 — 문자 배열·널 종료 문자·char 배열 초기화·크기 지정 | 기초 C언어 8.3.1
기초 C언어Chapter 08 배열 › Section 03 문자열과 char 배열
8.3.1 C언어와 문자열
별도의 자료형 없이 char 배열로 다루는 C언어의 문자열. 끝을 알리는 널 문자 \0과 두 가지 초기화 방식, 크기를 정할 때의 주의점.
영상 목차 · 원하는 부분부터 보기
01미뤄 둔 널 문자와 배열의 관계교재 245p
- 3.4.2에서는 문자열 상수의 끝에 널 문자 \0이 붙는다는 점까지만 확인하고, \0과 배열의 관계는 8장으로 미룸. 4.3.3의 char name[10]도 마지막 한 자리는 널 문자 몫이라고만 짚고 넘어감.
- 이번 편에서는 문자열을 char 배열로 다시 살펴봄. 문자열 = 문자 배열, 널 종료 문자, 선언과 초기화, 크기 지정 시 주의점의 네 가지 순서.
02문자열 = 문자 배열교재 245p
- C언어에는 int나 double처럼 문자열만을 위한 기본 자료형이 없음. 대신 문자(char)들의 배열을 이용하여 문자열을 다루는 방식.
- "Hello"는 H, e, l, l, o 다섯 문자의 연속적인 집합으로 취급됨. 8.1.1에서 본 배열과 같은 짜임에 칸마다 문자가 들어 있는 구조.
- "Hello"를 담은 배열은 인덱스 0~4에 문자 다섯, 인덱스 5에 널 종료 문자가 놓여 모두 여섯 칸. 글자는 다섯이지만 칸은 여섯이 필요한 까닭.
03끝을 알리는 널 종료 문자교재 245p
- C언어 문자열의 가장 핵심적인 규칙 — 모든 문자열의 끝에는 널(Null) 종료 문자 \0이 포함되어야 함. 눈에 보이지 않는 문자.
- 문장의 끝을 알리는 마침표, 책의 마지막을 알리는 ‘The End’ 표시와 같은 구실. 문자열이 끝나는 자리를 알려 주는 표시.
- printf 같은 함수는 널 문자를 만날 때까지 메모리에서 문자를 하나씩 읽어 화면에 출력. 끝은 글자 수가 아니라 \0의 위치로 판단.
널 문자가 없으면 끝을 알 수 없음
\0이 빠진 문자열은 어디서 끝나는지 알 수 없어, 함수가 엉뚱한 메모리 영역까지 계속 읽어 들이며 오류를 일으킬 수 있음. Hello 뒤에 알 수 없는 글자가 줄줄이 찍히는 것이 흔한 모습. \0의 0은 알파벳 O가 아니라 숫자 0이라는 점도 주의.
04큰따옴표를 이용한 초기화(권장)교재 246p
- 문자열을 저장하려면 문자열과 널 문자를 모두 담을 만큼 충분한 크기의 char 배열을 선언. 초기화 방법은 두 가지.
- char str[] = "Hello"; — 가장 쉽고 일반적인 방법. 컴파일러가 문자열의 길이를 자동으로 계산하고 맨 끝에 \0을 자동으로 추가.
- 대괄호를 비워 둔 꼴은 8.1.1의 배열 크기 자동 계산과 같음. 결과는 다섯 글자에 널 문자 한 글자를 더한 6개의 char 공간, 메모리에는 {'H', 'e', 'l', 'l', 'o', '\0'} 순서로 저장.
05중괄호를 이용한 초기화교재 246p
- 문자를 하나씩 작은따옴표로 감싸 중괄호 안에 나열하는 방법도 가능. 이 경우 끝을 알리는 \0을 반드시 직접 추가.
- 상세 코드는 교재 245~246p의 두 예제에서 확인. 두 방식의 저장 결과는 같고, 널 문자를 누가 넣는지가 차이.
| 초기화 방식 | 형식 | 널 문자 |
|---|---|---|
| 큰따옴표(권장) | char str[] = "Hello"; | 컴파일러가 자동 추가 |
| 중괄호 | 작은따옴표로 감싼 문자를 쉼표로 나열 | 반드시 직접 적음 |
중괄호 방식에서 \0을 빠뜨리면
문자 다섯만 나열하면 문자 배열일 뿐 문자열의 끝 표시가 없는 상태. 널 문자가 없을 때와 마찬가지로 끝을 알 수 없는 문자열이 되므로, 큰따옴표 방식을 권장하는 이유.
06크기 지정 시 주의점과 다음 편교재 246~247p
- 크기를 직접 지정할 때는 저장하려는 문자의 개수보다 최소 1만큼 더 크게. 마지막 널 문자의 공간을 확보하기 위함.
- "Hello"(5글자)는 최소 char str[6], "C lang"(6글자)은 최소 char str[7] 이상. 공백 한 칸도 한 글자로 셈.
- 정리하면 배열의 크기 ≥ 문자의 개수 + 1. 4.3.3의 name[10]에 아홉 글자까지만 담을 수 있던 까닭.
- 다음 편 8.3.2에서는 char 배열에 담은 문자열을 화면에 출력하고 키보드로 입력받는 방법을 다룸.
이 절의 핵심 정리
- C언어에는 문자열 전용 기본 자료형이 없어 문자열을 char 배열로 다룬다.
- 모든 문자열의 끝에는 눈에 보이지 않는 널 종료 문자 \0이 포함되어야 한다.
- printf 같은 함수는 널 문자를 만날 때까지 문자를 하나씩 읽어 출력한다.
- 큰따옴표로 초기화하면 널 문자가 자동으로 추가되지만, 중괄호로 초기화하면 직접 적어야 한다.
- 배열 크기를 직접 지정할 때는 저장할 문자의 개수보다 최소 1만큼 크게 정한다.
강의 자료8.3.1 C언어와 문자열
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기