아 물론 내가 고생한게 아니고 난 저렇게 쓸 필요가 없지만
어디카페 질문글로 올라와서 질문글보면서 복습도 할겸 봤었는데
코드질이 병맛임
구조체는
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); //버퍼에 남아있는 입력을 비움
}
}
당연히 위코드는 딱보면 나오지만 고민좀 했었다능..
코드를 저렇게 짤 필요도 없는데 말이지..
댓글 0