char 배열로서의 문자열
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 12번째.
C 언어에는 다른 프로그래밍 언어에서 볼 수 있는 것과 같은 내장된 문자열 데이터 타입이 없습니다. 대신, 문자열은 문자 배열로 표현됩니다. 이 근본적인 개념은 C 프로그래밍에서 텍스트가 어떻게 처리되는지 이해하는 데 필수적입니다.
C 언어에서 문자열은 단순히 연속된 메모리 공간에 저장된 문자들의 시퀀스입니다. 문자열을 생성하려면, 필요한 모든 문자를 저장할 수 있을 만큼 충분히 크고, 특별한 종료 문자를 위한 여분의 공간이 하나 더 포함된 문자 배열을 선언합니다.
char greeting[6]; // 5개의 문자 + 종결 문자를 저장할 수 있음
char message[20]; // 최대 19개의 문자 + 종결 문자를 저장할 수 있음문자열을 다루는 가장 편리한 방법은 배열을 선언할 때 문자열 리터럴(string literal)로 직접 초기화하는 것입니다. C는 배열에 각 문자를 저장하는 세부 사항을 자동으로 처리합니다:
char greeting[6] = "Hello";
// 이것은 'H', 'e', 'l', 'l', 'o'와 특별한 종결 문자를 저장합니다문자열 리터럴로 초기화할 때 크기 지정을 생략하여 C가 배열 크기를 자동으로 결정하게 할 수도 있습니다.
char greeting[] = "Hello"; // C에서 이 크기는 자동으로 6이 됩니다문자열이 문자 배열이라는 점을 이해하는 것은 매우 중요합니다. 이는 C 언어가 텍스트 데이터를 처리하는 방식을 설명해주며, 이러한 문자 배열을 대상으로 작동하는 문자열 조작 함수를 다루기 위한 기초가 되기 때문입니다.
챌린지
쉬움문자열을 저장하기 위해 문자 배열을 생성하고 작업하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- "Hello" 문자열을 담기에 충분한 공간을 가진
greeting이라는 이름의 문자 배열을 선언하세요 (널 종료 문자를 고려해야 함을 기억하세요). greeting배열을 문자열 리터럴 "Hello"로 초기화하세요.- 20개의 요소를 가진
message라는 이름의 두 번째 문자 배열을 선언하세요. message배열을 문자열 리터럴 "Welcome"으로 초기화하세요.- 크기를 지정하지 않고
word라는 이름의 세 번째 문자 배열을 선언하고, "Programming"으로 초기화하여 C가 자동으로 크기를 결정하게 하세요. %s형식 지정자와 함께printf를 사용하여 세 문자열을 모두 출력하세요.- 각 문자 배열이 차지하는 메모리 양을 보여주기 위해
sizeof를 사용하여 각 배열의 크기를 출력하세요.
출력은 다음과 같은 형식으로 결과를 표시해야 합니다:
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12이 챌린지는 문자열 저장을 위한 문자 배열을 선언하는 방법, 문자열 리터럴이 문자 배열에 할당될 때 자동으로 널 종료되는 방식, 그리고 초기화 중에 크기 지정을 생략했을 때 C가 배열 크기를 자동으로 계산하는 방식에 대한 이해를 테스트합니다.
치트 시트
C 언어에서 문자열은 문자 배열로 표현됩니다. 내장된 문자열 데이터 타입은 없습니다.
지정된 크기로 문자 배열을 선언합니다:
char greeting[6]; // 5개의 문자 + 종결 문자를 저장할 수 있음
char message[20]; // 최대 19개의 문자 + 종결 문자를 저장할 수 있음문자열 리터럴로 초기화합니다:
char greeting[6] = "Hello";
// 저장되는 내용: 'H', 'e', 'l', 'l', 'o', 그리고 특별한 종결 문자C가 자동으로 배열 크기를 결정하게 합니다:
char greeting[] = "Hello"; // C가 자동으로 크기를 6으로 설정합니다%s 형식 지정자를 사용하여 문자열을 출력합니다:
printf("%s", greeting);sizeof를 사용하여 배열 크기를 가져옵니다:
sizeof(greeting) // 배열이 차지하는 총 바이트 수를 반환합니다직접 해보기
#include <stdio.h>
int main() {
// TODO: 여기에 코드를 작성하세요
// 챌린지에 명시된 대로 문자 배열을 선언하고 초기화하세요
// 문자열과 그 크기를 출력합니다
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.