본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter44. 문자열 배열 – 여러 개의 문자열을 한 번에 저장하는 방법

by about_IT 2025. 4. 18.

이전에는 하나의 문자열을 저장하는 방법을 배웠습니다.
이번에는 여러 개의 문자열을 한 번에 저장할 수 있는 문자열 배열을 알아보겠습니다.

문자열 배열은 문자 배열들의 배열로 생각할 수 있습니다.
즉, 2차원 배열을 사용해서 여러 줄의 텍스트를 저장하는 방식입니다.


● 문자열 배열 선언 방법

char names[3][20];
  • 3개의 문자열을 저장할 수 있습니다.
  • 각 문자열은 최대 19글자 + 널문자('\0')까지 저장됩니다.

● 문자열 배열 초기화

char fruits[3][10] = {
    "apple",
    "banana",
    "grape"
};

각 줄은 개별 문자열처럼 초기화됩니다.
단, 열의 크기(여기서는 10)는 문자열의 최대 길이를 고려해야 합니다.


● 문자열 배열 출력

for (int i = 0; i < 3; i++) {
    printf("%s\n", fruits[i]);
}

배열 이름과 인덱스를 이용해 각 문자열을 출력할 수 있습니다.


● 문자열 배열 입력

for (int i = 0; i < 3; i++) {
    printf("%d번째 단어 입력: ", i + 1);
    scanf("%s", names[i]);
}

scanf를 사용해 각 줄에 문자열을 저장할 수 있습니다.
공백이 포함된 문자열을 입력받으려면 gets 함수 또는 fgets 함수를 사용해야 하며,
보안상 fgets 함수 사용을 권장합니다.


문자열 배열은 이름 목록, 과일 목록, 도시 목록 등 여러 문자열을 저장할 때 유용하게 사용됩니다.
입력과 출력 모두 반복문과 함께 쓰면 간편하게 처리할 수 있습니다.


● 실습 문제

문제 1

3개의 도시 이름을 저장할 수 있는 문자열 배열을 선언하세요.

 

문제 2

아래 값으로 초기화된 과일 배열을 선언하세요: apple, mango, peach

 

문제 3

문자열 배열에 이름을 입력받아 출력하는 코드를 작성하세요. (3개)

 

문제 4

문자열 배열을 사용하면 어떤 점이 좋은지 한 가지 장점을 설명하세요.

 

문제 5

문자열 배열의 각 요소에 접근하는 방법을 설명하세요.

 

▶ 정답 확인하기

정답 1

char cities[3][20];

 

정답 2

char fruits[3][10] = {
    "apple",
    "mango",
    "peach"
};

 

정답 3

char names[3][20];

for (int i = 0; i < 3; i++) {
    scanf("%s", names[i]);
}

for (int i = 0; i < 3; i++) {
    printf("%s\n", names[i]);
}

 

정답 4

여러 문자열을 하나의 배열로 관리할 수 있어 코드가 간결하고 정리하기 쉽습니다.

 

정답 5

배열 이름과 인덱스를 사용하여 접근합니다. 예: names[0], cities[2] 등