c언어에서 2차원 배열은
int a[10][10];
위와 같은 형식으로 선언이 됩니다.
일차원 배열과 마찬가지로 선언과 동시에 초기화 할 수 있습니다
int a[3][3]={{1, 1, 1},{2, 2, 2},{3, 3, 3}};
이차원 배열의 내용을 출력하려면 이중 반복문이 필요합니다.
#include <stdio.h> int main () { int i, j; int a[3][3]={{1, 11, 21},{2, 22, 23},{3, 34, 36}}; //선언
for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } } |
위 소스는 3*3정사각행렬로 나왔습니다.
a[][] : 두 개의 [](대괄호)가 행과 열을 나타낼 수 있습니다.
이 번에는a[2][3]으로 작성을 해보죠.
#include <stdio.h>
int main () { int i, j; int a[2][3]={{1, 11, 21},{2, 22, 23}}; //선언
for(i=0;i<2;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } } |
이번에는 2행 3열 짜리 행렬로 나오네요
소스를 보시면 for문의 i값도 i<2로 수정 되었습니다.
바깥쪽 반복문이 행을, 안쪽 반복문이 열을 나타내기 때문이지요.
c언어에는 문자열을 다루는 변수형이 없습니다.
반드시 배열에 담아서 처리를 해야 하지요.
홍길동 유관순 이순신 |
이렇게 문자열들을 여러개 입력 받으려면 이차원 배열을 사용해야 합니다.
#include <stdio.h>
int main () { int i; char name[3][10];
for(i=0;i<3;i++){//입력 scanf("%s", name[i]); }
printf("----------여기서 부터 출력-----------\n"); for(i=0;i<3;i++){//출력 printf("%s\n", name[i]); } } |
문자열 입력에서는 이중 반복문이 아니지요?
하지만 분명 선언은 이차원 배열로 선언 했습니다.
비록 문자열을 다루는 변수형은 없지만 문자열을 다루는 형식지정자 %s가 있기 때문입니다.
덕분에 문자열을 좀더 쉽게 다룰 수 있지요.
간혹 3명을 이름 3글자씩 준다고
char name[3][3]; 이렇게 선언하시는 분들이 계신데요.
한글은 한글자에 2byte씩입니다. 그리고 문자열의 맨 뒤에는 우리 눈에는 보이지 않지만 '\0'가 들어가 있습니다. 널 문자라고도 하는데, 문자열의 끝을 나타내 줍니다.
그렇기 때문에 최소 7이상은 선언해 주시는게 좋습니다.
형식지정자
[Computer/Programing] - c언어 형식지정자
'IT > Programing' 카테고리의 다른 글
c언어 문자열(1) (0) | 2013.12.25 |
---|---|
c언어 포인터를 이용한 스왑함수 구현 (2) | 2013.12.14 |
c언어 삽입정렬 (0) | 2013.12.13 |