Menu
Coddy logo textTech

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 언어가 텍스트 데이터를 처리하는 방식을 설명해주며, 이러한 문자 배열을 대상으로 작동하는 문자열 조작 함수를 다루기 위한 기초가 되기 때문입니다.

challenge icon

챌린지

쉬움

문자열을 저장하기 위해 문자 배열을 생성하고 작업하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. "Hello" 문자열을 담기에 충분한 공간을 가진 greeting이라는 이름의 문자 배열을 선언하세요 (널 종료 문자를 고려해야 함을 기억하세요).
  2. greeting 배열을 문자열 리터럴 "Hello"로 초기화하세요.
  3. 20개의 요소를 가진 message라는 이름의 두 번째 문자 배열을 선언하세요.
  4. message 배열을 문자열 리터럴 "Welcome"으로 초기화하세요.
  5. 크기를 지정하지 않고 word라는 이름의 세 번째 문자 배열을 선언하고, "Programming"으로 초기화하여 C가 자동으로 크기를 결정하게 하세요.
  6. %s 형식 지정자와 함께 printf를 사용하여 세 문자열을 모두 출력하세요.
  7. 각 문자 배열이 차지하는 메모리 양을 보여주기 위해 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;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨