본문 바로가기
개발 공부/C언어

[열혈 C 프로그래밍] 도전! 프로그래밍4, 도전2번 정답

by 반달bear 2022. 7. 30.
반응형
구조체 포인터 배열을 선언하고 구조체 변수를 동적으로 할당하는 형태로 프로그램을 구현해보고 이러한 방법이 지니는 장점이 뭔지도 생각해봤다.

 

 
 
내가 생각하는 변수를 동적으로 할당하는 포인터 배열의 선언의 장점은 나중에라도 책을 3권 이상 추가하고 싶다면 기존의 코드를 건드릴 필요없이 realloc를 사용하여 b=(Book*)realloc(sizeof(Book)*5); 이런식으로 5 부분을 scanf로 입력받은 후 조절할 수 있다는 점이다.

 

#include<stdio.h>
#include<stdlib.h>

typedef struct book {
    char bookname[30];
    char author[30];
    int pagenum;
} Book;

void ReadData(Book ** b)
{
    for(int i=0;i<3;i++)
    {
        printf("Its About Book%d's Info\n",i+1);

        fputs("enter the name of book : ",stdout);
        gets(b[i]->bookname);

        fputs("enter the name of author : ",stdout);
        gets(b[i]->author);


        fputs("enter page number of book : ",stdout);
        scanf("%d",&b[i]->pagenum);
        getchar();
    }
}

void PrintData(Book ** b)
{
    for(int i=0;i<3;i++)
    {
        printf("####book%d####\n",i+1);
        printf("author : %s\n",b[i]->author);
        printf("bookname : %s\n",b[i]->bookname);
        printf("page number : %d\n",b[i]->pagenum);
    }
}

int main(void)
{
    // Book * b[3];

   
    Book * b=(Book*)malloc(sizeof(Book)*3);
    
    
    ReadData(b); 
    PrintData(b);
   
    free(b);
    

    return 0;
}

 

반응형

댓글