easy software

C언어 구조체의 유용함을 알아보자 본문

C언어/구조체

C언어 구조체의 유용함을 알아보자

JAVA 웹개발자 2015. 2. 8. 21:14

구조체는 정말 유용합니다.

 

관련 있는 데이터를 하나의 자료형으로 묶을 경우 관리하기가 편해지고,

 

코드도 간결해집니다.

 

 

 

#include <stdio.h>

 

struct person{

char name[20];

char phone[20];

};

 

int main(void){

struct person pArray[3];

 

for(int i = 0; i < 3; i++){

printf("이름, 전화번호 순으로 입력 : ");

scnaf("%s %s", pArray[i].name, pArray[i].phone);

}

 

printf("\n입력 결과는 다음과 같습니다.\n");

 

for(int i = 0; i < 3; i++){

printf("전화번호 : %s\n", pArray[i].name);

printf("전화번호 : %s\n", pArray[i].phone);

}

 

return 0;

}

 

 

 

위의 코드는 세명의 정보(이름, 전화번호)를 저장하고, 저장된 결과를 보여주는 프로그램입니다.

 

구조체를 사용했기 때문에 관련있는 데이터를 관리하기가 수월하겠죠?

 

구조체를 사용하지 않으면, 사람마다 일일이 데이터를 따로 관리해야하는 문제도 있을 수 있고,

 

코드도 훨씬 더 복잡해 질 수 있습니다.

 

그럼 위의 프로그램을 구조체를 사용하지 않으면서,

 

다차원 배열은 하나만 사용하여 구현해 보았습니다.

 

프로그램이 간단해서 망정이지, 복잡한 프로그램 이었으면 정말 어려웠을 거 같아요.

 

 

 

#include <stdio.h>

 

int main(void){
     char iden[3][3][20];
     int j = 0;

 

     for (int i = 0; i < 3; i++){
          j = 0;
          printf("이름, 전화번호, 주소 순으로 입력: ");
          scanf("%s %s %s", iden[i][j], iden[i][j + 1], iden[i][j + 2]);

}

 

     printf("\n입력 결과는 다음과 같습니다.\n\n");

 

     for (int i = 0; i < 3; i++){
          j = 0;
          printf("이름 : %s, ", iden[i][j]);
          printf("전화번호 : %s, ", iden[i][++j]);
          printf("주소 : %s \n", iden[i][++j]);
     }

 

     return 0;
}

 

 

 

 

 

위의 코드는 구조체를 사용하지 않고 작성한 프로그램입니다.

 

3차원 배열을 사용했으므로 첫번째 반복문에서 사용자로부터 입력받은 데이터는

 

3개의 면에 각각 이름, 전화번호, 주소 순으로 저장이 됩니다.

 

그리고 출력문을 포함한 반복문에서는 적절히 인덱스에 접근하여

 

저장된 데이터를 출력하고 있습니다.

 

 

** 그런데 코드를 보시면 3차원 배열인데

 

두개의 대괄호로 인덱스에 접근함을 볼 수 있습니다.

 

첫번째 면의 두번째 행의 첫번째 주소에 접근하기 위해서는 대괄호를 두개만 사용하여

 

iden[1][2]로 작성해주시면 됩니다.

Comments