본문 바로가기
2학년 2학기/c언어

10-6장 문자열의 배열

by print_soo 2024. 11. 5.

문자열의 배열을 이용해서 각 문자열의 문자들은 행이 되고, 문자열 들의 개수는 열이된다. 

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"
};