문자열의 배열을 이용해서 각 문자열의 문자들은 행이 되고, 문자열 들의 개수는 열이된다.
char 문자열 명[문자열 개수][문자열 중 최대 문자의 길이 + 1] = { "" , "" , "", ... }
char s[3][6] = { "init",
"open",
"close"
};
반복문을 통해서 문자열의 배열(2차원 배열) 출력하기
#include <stdio.h>
int main() {
int i, j;
char menu[5][10] = {
"init",
"open",
"close",
"read",
"write"
};
for (i = 0; i < 5; i++) {
for (j = 0; menu[i][j] != '\0'; j++) {
printf("menu[%d][%d]: %c ", i, j, menu[i][j]);
}
printf("\n");
}
}
//결과
//menu[0][0]: i menu[0][1]: n menu[0][2]: i menu[0][3]: t
//menu[1][0]: o menu[1][1]: p menu[1][2]: e menu[1][3]: n
//menu[2][0]: c menu[2][1]: l menu[2][2]: o menu[2][3]: s menu[2][4]: e
//menu[3][0]: r menu[3][1]: e menu[3][2]: a menu[3][3]: d
//menu[4][0]: w menu[4][1]: r menu[4][2]: i menu[4][3]: t menu[4][4]: e
이렇게 각 행의 길이를 매번 최대 길이 + 1을 계산해서 정해주기란 불편하다. 따라서 C에서는 각 행의 길이를 가변적으로 선언할 수 있게 만든 래그드(ragged)배열이 있다.
래그드(ragged)배열
: 각 행의 길이를 가변적으로 하기 위해서 포인터 배열을 선언하여 문자열을 저장하는 방식
char* fruits[] = {
"apple",
"banana",
"orange",
"melon"
};
'2학년 2학기 > c언어' 카테고리의 다른 글
11-1장 구조체 (0) | 2024.11.11 |
---|---|
10-7장 문자(열) 처리 라이브러리(암기는 필요 없으나, 뭐하는 함수인지는 알아야함) (0) | 2024.11.05 |
10-5장 문자열과 포인터 (0) | 2024.11.05 |
10-4장 문자열을 수치로 변환 (0) | 2024.11.04 |
10-3장 문자열 처리 라이브러리 (0) | 2024.11.04 |