인프런 커뮤니티 질문&답변
문자열 배열 강의자료
해결된 질문
작성
·
25
0
C 배열과 문자열 자료에서 문제열 배열 부분 2차원으로 안 되어 있고 char stringArray[20]이라고만 되어있는데 무조건 2차원이어야하나요?
답변 2
0
아! 문자열을 요소로 같은 배열에 오타가 있네요. 수정하도록 하겠습니다.
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 인턴입니다. asdf님.
문자열 배열에 대해 문의 주셨군요. C 언어에서 문자열을 저장하기 위해 꼭 2차원 배열을 사용할 필요는 없습니다. 문자열은 문자들의 배열로 표현되며, 이때 문자열을 저장하기 위한 배열이 1차원 배열이면 충분합니다. 즉, char stringArray[20]라는 선언은 길이 20의 문자열을 저장할 수 있는 1차원 배열을 선언한 것이며 충분히 올바른 방식입니다.
1차원 배열 (예:
char stringArray[20]): 문자열 하나를 저장하기 위한 배열로, 각 인덱스에 개별 문자가 저장됩니다. 배열의 크기는 저장할 문자열의 최대 길이를 설정하며, 널 문자(\0) 포함을 고려해야 합니다.2차원 배열 (예:
char stringArray[5][20]): 여러 문자열을 저장할 때 사용됩니다. 각 “행”이 문자열에 대응하고 각 “열”이 개별 문자를 저장하게 됩니다. 이 방식은 여러 개의 문자열을 다룰 때 유용합니다.
문자열 배열의 차이와 사용 방식에 대해 좀 더 자세한 설명을 원하신다면, 아래와 같은 질문도 참고하시길 권장드립니다:
- 다차원 배열과 문자열 배열 22분 쯤: 문자열 배열과 각 차원의 활용 사례에 관한 설명이 포함되어 있는 답변을 확인할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






넵