문자열 상수 — 큰따옴표·널 문자와 printf의 %s 출력 | 기초 C언어 3.4.2
기초 C언어Chapter 03 상수 › Section 04 문자
3.4.2 문자열
큰따옴표로 문자열을 적고, 문자 배열 끝의 널 종료 문자가 하는 일을 살펴봄. printf의 %s로 문자열을 출력한 뒤 문자 상수와 문자열 상수의 차이를 구별함.
영상 주소 https://www.youtube.com/watch?v=aLKSt9qGRSg · C언어 강의실 채널
01문자열 상수 — 글자들을 순서대로 나열교재 56p
- 문자열(String) —
"Hello","C Language"처럼 문자들을 차례로 나열한 것. 단어뿐 아니라 공백과 기호도 문자열의 일부가 될 수 있음. - 문자열 상수 — 문자열을 코드에 직접 적은 표현. 이 절에서는 교재의 Hello, World!와 Cat을 통해 표기와 저장 모양을 살펴봄.
- 한 글자도 문자열 —
"A"는 내용이 한 글자여도 문자열 상수. 글자 수만으로 문자와 문자열을 구분하지 않음.
02큰따옴표 — 작은따옴표와 역할 구별교재 56p
- 문자열의 표기 규칙 — 문자열 상수는 큰따옴표로 감쌈. printf에 표시할 문장을 적을 때 보았던 형태와 같음.
- 문자 상수와 비교 —
'A'는 문자 상수,"A"는 문자열 상수. 비슷한 모습이어도 저장 형태와 출력에 사용할 변환 지정자가 다름. - 따옴표까지 읽기 — 화면에 A가 보인다는 결과만으로 원래 값이 문자였는지 문자열이었는지 판단할 수 없음. 코드의 따옴표와 변환 지정자를 확인.
| 표현 | 종류 | 출력에 쓰는 지정자 |
|---|---|---|
| "Hello, World!" | 문자열 상수 | %s |
| "A" | 문자열 상수 | %s |
| 'A' | 문자 상수 | %c |
한 칸의 글자와 글자를 담은 줄
- 문자를 글자 하나로, 문자열을 글자가 순서대로 놓이는 줄로 생각할 수 있음. 그 줄에는 한 글자만 놓일 수도 있음.
- 큰따옴표를 보는 순간 글자들의 나열과 끝 표시를 함께 떠올리는 것이 핵심. 다음 단계에서 그 끝 표시가 어떤 값인지 확인.
03문자의 배열 — Cat이 놓이는 네 칸교재 56p
- C언어의 문자열 표현 — 별도의 기본 문자열 자료형 대신 문자 배열로 문자열을 다룸. 배열에 관한 자세한 내용은 8장에서 배우고, 지금은 문자가 연속해서 놓인다는 모습을 이해.
- "Cat"의 저장 — C, a, t가 차례로 놓이고 맨 뒤에 널 문자 한 칸이 추가됨. 화면에 보이는 세 글자와 메모리에 필요한 네 칸을 구별.
- 문자 코드와 연결 — ASCII 기준으로 C는 67, a는 97, t는 116. 마지막 널 문자의 값은 0.
| 위치 | 첫째 칸 | 둘째 칸 | 셋째 칸 | 넷째 칸 |
|---|---|---|---|---|
| 저장 문자 | 'C' | 'a' | 't' | '\0' |
| ASCII 기준 값 | 67 | 97 | 116 | 0 |
- 교재 그림의 1000, 1001 같은 주소는 연속된 칸을 설명하기 위한 예시. 실행할 때마다 반드시 그 주소에 문자열이 놓인다는 뜻은 아님.
04널 종료 문자 — 문자열의 끝을 알리기교재 57p
- 널 종료 문자 —
\0은 문자열이 끝났음을 나타내는 값 0인 문자. 눈에 보이는 숫자 문자'0'과 다름. - %s의 기본 동작 — 문자열의 문자를 순서대로 읽다가 널 문자를 만나면 출력이 끝남. 널 문자 자체는 글자처럼 보이지 않음.
- 끝 표시가 빠지면 — 배열 범위를 넘어 읽는 등 정의되지 않은 동작이 생길 수 있음. 이상한 값이 출력되거나 프로그램이 종료될 수 있어 결과를 보장할 수 없음.
- 필요한 공간 — Cat처럼 각 글자가 1바이트인 예에서는 글자 3개와 널 문자 1개를 합쳐 4바이트 필요. 한글처럼 여러 바이트로 인코딩되는 문자는 글자 수와 바이트 수가 다를 수 있음.
글의 마침표처럼 끝을 알려 주는 표시
- 널 문자는 함수가 어디서 멈춰야 하는지 알려 주는 끝 표시. 화면에 출력할 글자는 아니지만, 문자열을 올바르게 다루는 데 필요한 한 칸.
- 공간을 셀 때는 보이는 글자들만 세지 말고 끝 표시 한 칸을 더함. 다만 배열을 더 크게 선언했다면 그 배열 전체 크기는 최소 필요 공간보다 클 수 있음.
05문자열 출력 — printf의 %s 사용교재 57p
CODE 3.6 · 문자열 출력 예시
#include <stdio.h>int main(void) {printf("가장 대표적인 문자열: %s\n", "Hello, World!");return 0;}
실행 결과
가장 대표적인 문자열: Hello, World!
- 03줄의 %s — 뒤에 전달한 문자열 Hello, World!를 출력할 위치. 하나의 문자열이 그 자리에 이어서 표시됨.
- 줄 바꿈 — 형식 문자열 끝의
\n이 출력 뒤 줄을 바꿈. 문자열의 끝을 나타내는\0과 역할이 다름. - 보이는 길이와 저장 공간 — Hello, World!는 공백과 쉼표, 느낌표를 포함해 13글자. 이 예의 문자열 리터럴은 널 문자까지 포함한 char 14칸으로 구성됨.
06문자와 문자열 — A 한 글자도 다르게 저장교재 58p
| 구분 | 'A' | "A" |
|---|---|---|
| 의미 | 보통의 문자 상수 | 문자열 상수 |
| 자료 형태 | int형 정수 값 | char 2칸의 배열 |
| 내용 | ASCII 호환 환경에서 65 | 'A'와 '\0' |
| 크기 | sizeof(int), 환경에 따라 다름 | 2바이트 |
| 기본 출력 지정자 | %c | %s |
- 교재 표의 크기 구분 — 1바이트라는 설명은 문자 값을 담는 char 한 칸에 해당. C의 문자 상수
'A'자체는 int형이므로 그 크기와는 구별해야 함. - 문자열과 주소 — 문자열 배열은 대부분의 식에서 첫 번째 원소를 가리키는 포인터로 변환됨. 교재가 문자열의 값으로 주소를 소개하는 맥락이며, 자세한 내용은 10장에서 학습.
- 지금 기억할 것 — 작은따옴표는 문자 값, 큰따옴표는 널 문자를 포함하는 문자열. 출력 결과보다 코드의 표현과 저장 구조를 먼저 구별.
이 절의 핵심 정리
- 문자열 상수는 문자들을 큰따옴표로 감싼 표현이다.
- C의 문자열은 문자 배열과 널 종료 문자로 이해한다.
- \0은 값 0인 끝 표시이며 문자 '0'과 다르다.
- printf의 %s는 문자열을 출력한다.
- 'A'와 "A"는 자료형·저장 형태·출력 지정자가 다르다.
강의 자료3.4.2 문자열
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 4.1.1 변수의 개념과 구조 교재 80p~83p — 변수의 개념과 구조를 살펴봅니다.
더 자세한 내용은 교재에서
이 글은 『기초 C언어』 56p~58p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.
댓글
댓글 쓰기