아 물론 내가 고생한게 아니고 난 저렇게 쓸 필요가 없지만

어디카페 질문글로 올라와서 질문글보면서 복습도 할겸 봤었는데

코드질이 병맛임

구조체는

typedef struct Data
{
        char name[20];  //작가이름
        char book[40];  //책이름
        int page;   //페이지수
}Data;

문제가 생기는 함수는 아래와 같음.

void Input(struct Data **D, int *num)
{
        int i;

        puts(\"도서 정보 입력\");

        for(i=0; i<*num; i++)
        {
                //저자 입력
                fputs(\"저자:\", stdout);
                fgets(D[i]->name, sizeof(D[i]->name), stdin);

                /* 이 아래줄은 fgets가 \\n까지 저장해 한줄을 띄어버리는 것을 막기 위함임  */
                { register char *p; for(p=D[i]->name;*p;p++) if(*p==\'\\r\' || *p==\'\\n\'){ *p = \'\\0\'; break;} }

                //제목 입력
                fputs(\"제목:\", stdout);
                fgets(D[i]->book, sizeof(D[i]->book), stdin);
                { register char *p; for(p=D[i]->book;*p;p++) if(*p==\'\\r\' || *p==\'\\n\'){ *p = \'\\0\'; break;} }

                //페이지수 입력
                fputs(\"페이지수:\", stdout);
                scanf(\"%d\", &D[i]->page);

                puts(\"\");
                fflush(stdin); //버퍼에 남아있는 입력을 비움
        }
}

당연히 위코드는 딱보면 나오지만 고민좀 했었다능..

코드를 저렇게 짤 필요도 없는데 말이지..