c언어 문자열을 여러 개 저장하는 방법에 대하여 알아보기
네 안녕하세요, 이번 포스팅에서는 문자열을 여러 개 저장하는 방법에 대하여 알아보는 시간을 가져보도록 하겠습니다.
우리는 지금까지 문자열을 하나만 다뤘었는데,
사실 실제로 프로그램을 만들다 보면 문자열을 여러 개 저장해야 하는 경우가 훨씬 많습니다.
그래서 우리는 그러한 방법을 알고 있어야 나중에 하드 코딩을 하지 않고 원활히 코드를 짤 수 있습니다.
그럼 지금부터 시작하도록 하겠습니다.
1. 문자열을 여러 개 저장하는 방법
문자열을 여러 개 저장하는 방법은 크게 2가지가 있습니다.
- 2차원 문자 배열을 이용하여 저장하기
- 문자 포인터 배열을 사용하여 저장하기
이 두 가지를 이용하며,
나중에 배울 구조체를 이용해서도 저장을 하는데,
그건 나중에 다루도록 하겠습니다.
1 - 1. 2차원 문자 배열을 이용하여 저장하기
우리가 문자열을 배열에 저장을 하여 문자 배열로 선언을 할 수 있는 것처럼,
당연히 2차원 배열에도 문자열을 저장을 할 수 있습니다.
이런 식으로 예를 들 수 있습니다.
char s[3][10] = {
"chicken",
"pizza",
"ramen"
};
선언하는 방식은 크게 다르지 않고, 다만, 문자열이기 때문에 큰따옴표 안에 글자를 적어야 합니다.
그리고 배열이기 때문에 역시 각각의 문자열은 인덱스 번호를 입력하여 출력이 가능합니다.
이런 식으로 말이죠.
printf("%s", s[0]);
이렇게 하면 2차원 문자 배열의 0번지 주소에 있는 문자열을 출력하게 됩니다.
그럼 이를 이용하여 간단한 예제를 작성해보도록 하겠습니다.
#include <stdio.h>
int main()
{
char fruits[3][20];
int i;
for(i = 0; i < 3; i++)
{
printf("과일 이름을 입력하세요 : ", fruits[i]);
scanf("%s", fruits[i]);
}
for(i = 0; i < 3; i++)
{
printf("%d번째 과일 : %s\n", i, fruits[i]);
}
return 0;
}
이렇게 하면 사용자가 입력하는 과일의 정보가 입력이 되고,
그게 문자 배열이 됩니다.
그럼 결과를 한 번 보도록 하겠습니다.
과일 이름을 입력하세요 : 사과
과일 이름을 입력하세요 : 배
과일 이름을 입력하세요 : 오렌지
0번째 과일 : 사과
1번째 과일 : 배
2번째 과일 : 오렌지
이런 식으로 결과가 나옵니다.
1 - 2. 문자 포인터 배열을 이용하여 저장하기
이번에는 문자 포인터 배열을 사용하여 저장하는 방법입니다.
우리가 그냥 2차원 배열에 저장을 하게 되면 문자열의 길이가 재각각이기 때문에 공간 낭비가 심해집니다.
그래서 그러한 것을 방지하기 위해서 문자 포인터 배열을 사용합니다.
사용 방법은 이러합니다.
char *s[3] = {
"chicken",
"pizza",
"ramen"
};
이에 대해 설명하면 문자 포인터 배열 s는 3개의 포인터를 요소로 가지고 있다는 뜻입니다.
그리고 이는 포인터로 저장이 되어 있는 것이기 때문에 문자열의 길이만큼만 공간을 차지합니다.
하지만 여기서 사용하는 문자 배열은 문자열 상수이기 때문에 한 번 선언이 되면 변경이 불가하다는 단점 역시 있습니다.
그럼 이를 이용하여 간단한 코드를 한 번 작성을 해보도록 하겠습니다.
#include <stdio.h>
int main()
{
int i;
char *menu[5] = {
"apple",
"banana",
"orange",
"mango",
"watermelon"
};
for(i = 0; i < 5; i++)
{
printf("%d번째 메뉴 : %s\n", i, menu[i]);
}
return 0;
}
그럼 결과를 한 번 보도록 하겠습니다.
0번째 메뉴 : apple
1번째 메뉴 : banana
2번째 메뉴 : orange
3번째 메뉴 : mango
4번째 메뉴 : watermelon
결과도 잘 나오는 것을 확인할 수 있습니다.
지금까지 문자열을 여러 개 저장하는 방법에 대하여 알아보았는데요,
다음 포스팅에서는 지금까지 배운 것들을 이용하여 여러 가지 문제들을 풀어보는 시간을 가져보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사드립니다~
'c언어' 카테고리의 다른 글
c언어 구조체에 대하여 간단히 알아보기 (0) | 2023.01.11 |
---|---|
c언어 문자와 문자열을 이용하여 여러 가지 문제 풀기(단어 세기, 영상 파일명 자동 생성하기, 한영사전 구현하기, 메시지 암호화 하기, 행맨 게임 만들기) (2) | 2023.01.09 |
c언어 문자열을 수치로 변환하는 방법 알아보기 (0) | 2022.12.31 |
c언어 문자열 처리 라이브러리에 대하여 알아보기 2(문자열 비교하기, 문자 및 문자열 검색하기, 문자열 토큰 분리하기) (0) | 2022.12.30 |
c언어 문자열 처리 라이브러리에 대하여 알아보기 1(문자열의 길이 구하기, 문자열 복사하기, 문자열 연결하기) (0) | 2022.12.29 |
댓글