inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

배열과 문자열

문자열 배열 강의자료

해결된 질문

58

asdf

작성한 질문수 2

0

C 배열과 문자열 자료에서 문제열 배열 부분 2차원으로 안 되어 있고 char stringArray[20]이라고만 되어있는데 무조건 2차원이어야하나요?

답변 2

0

주말코딩

안녕하세요, 영상에서 몇 분 몇 초인지 말씀 부탁드립니다.

혹시 학습 자료를 말씀하시는 걸까요?

0

asdf

1

주말코딩

아! 문자열을 요소로 같은 배열에 오타가 있네요. 수정하도록 하겠습니다.

 

C언어에서 배열에 문자열 넣는 방식은 2차원으로 해야합니다.

아니면 문자열의 시작을 가리키는 시작주소로 해야합니다.

 

1. 이차원 배열

// 방법 1-1: 선언과 동시에 초기화
char fruits[3][20] = {"apple", "banana", "orange"};

// 방법 1-2: 크기 자동 지정
char colors[][10] = {"red", "blue", "green"};

// 방법 1-3: 개별 초기화
char names[3][20];
strcpy(names[0], "Alice");
strcpy(names[1], "Bob");
strcpy(names[2], "Charlie");

 

2. 포인터로 배열 안의 요소 시작점 가리키기

// 방법 2-1: 문자열 리터럴 사용 (읽기 전용)
char *animals[3] = {"cat", "dog", "bird"};

// 방법 2-2: const 명시
const char *days[] = {"Monday", "Tuesday", "Wednesday"};

// 방법 2-3: 초기화 없이 선언 후 할당
char *cities[3];
cities[0] = "Seoul";
cities[1] = "Tokyo";
cities[2] = "Beijing";

 

2. 동적 메모리 할당 방식 (가능하긴 하지만, 시험에 나온 적은 없음)

// 방법 3-1: malloc으로 포인터 배열 생성
char **words = (char **)malloc(3 * sizeof(char *));
words[0] = (char *)malloc(20 * sizeof(char));
words[1] = (char *)malloc(20 * sizeof(char));
words[2] = (char *)malloc(20 * sizeof(char));
strcpy(words[0], "Hello");
strcpy(words[1], "World");
strcpy(words[2], "C");

// 사용 후 반드시 해제
free(words[0]);
free(words[1]);
free(words[2]);
free(words);

// 방법 3-2: strdup 사용 (더 간편)
char **items = (char **)malloc(3 * sizeof(char *));
items[0] = strdup("item1");  // 문자열을 복사하여 할당
items[1] = strdup("item2");
items[2] = strdup("item3");

// 해제
free(items[0]);
free(items[1]);
free(items[2]);
free(items);

 

정보처리기사 수준의 시험에서는 1번하고 2번만 알고 계시면 되겠습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. asdf님.

문자열 배열에 대해 문의 주셨군요. C 언어에서 문자열을 저장하기 위해 꼭 2차원 배열을 사용할 필요는 없습니다. 문자열은 문자들의 배열로 표현되며, 이때 문자열을 저장하기 위한 배열이 1차원 배열이면 충분합니다. 즉, char stringArray[20]라는 선언은 길이 20의 문자열을 저장할 수 있는 1차원 배열을 선언한 것이며 충분히 올바른 방식입니다.

  • 1차원 배열 (예: char stringArray[20]): 문자열 하나를 저장하기 위한 배열로, 각 인덱스에 개별 문자가 저장됩니다. 배열의 크기는 저장할 문자열의 최대 길이를 설정하며, 널 문자(\0) 포함을 고려해야 합니다.

  • 2차원 배열 (예: char stringArray[5][20]): 여러 문자열을 저장할 때 사용됩니다. 각 “행”이 문자열에 대응하고 각 “열”이 개별 문자를 저장하게 됩니다. 이 방식은 여러 개의 문자열을 다룰 때 유용합니다.

문자열 배열의 차이와 사용 방식에 대해 좀 더 자세한 설명을 원하신다면, 아래와 같은 질문도 참고하시길 권장드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

오타 제보

2

40

2

시큐리티 필터 설정 질문입니다!

2

47

1

macOS에서 Windows 실행하는 프로그램

1

23

2

강의 자료 위치

1

44

1