<div>밑코드를 복사하셔서 비쥬얼스튜디오에서 돌리면</div> <div>책을 아무리 새로이 입력해도</div> <div>두번째 세번째 입력한 데이터는 깨집니다. 첫번째랑 네번째~(무한) 까지는 데이터가 안깨지는걸로봐서 코드에 문제가 없는거같은데...</div> <div>왜 두번째와 세번째만 그러는지 잘모르겠네요...부탁드립니다 ㅠㅠ</div> <div> </div> <div> </div> <div> </div> <div>//도서관리 프로그램 구조체(도서명,출간날짜,일련번호,저자) 1.새도서입고 2.도서검색 3.도서정보출력 도서는 조건대로 정렬<br />//구조체를 새도서입고할때마다 이전 책 개수 값을 저장한 변수 + 1해서 새로이 선언.<br />#include <stdio.h><br />#include <stdlib.h><br />#include <string.h></div> <div>struct Book{<br /> char name[50];<br /> int publish_year;<br /> int publish_month;<br /> int publish_day;<br /> int serial_number;<br /> char writer[20];<br /> int *pNext;<br />};</div> <div>void Register_New_Book(Book *Database,int *pHow_many);<br />void Searching_Database(Book *Database,int *pHow_many);<br />void Output_Book_Info(Book *Database,int *pHow_many);</div> <div>int main(void)<br />{<br /> int select=0;<br /> int how_many=0;<br /> int *pHow_many;<br /> pHow_many=&how_many;<br /> Book *Database=(Book*)malloc(sizeof(Book)*((*pHow_many)+1)); // 데이터베이스 하나 증설<br /> while(1)<br /> {<br /> printf("1. 새도서입고\n");<br /> printf("2, 도서검색\n");<br /> printf("3. 도서정보출력\n");<br /> scanf("%d",&select);<br /> switch(select)<br /> {<br /> case 1:<br /> printf("새도서입고를 선택하셨습니다.\n");<br /> (*pHow_many)++;<br /> Register_New_Book(Database,pHow_many);<br /> break;<br /> case 2:<br /> printf("도서검색을 선택하셨습니다.\n");<br /> Searching_Database(Database,pHow_many);<br /> break;<br /> case 3:<br /> printf("도서정보출력을 선택하셨습니다.\n");<br /> Output_Book_Info(Database,pHow_many);<br /> break;<br /> default:<br /> break;<br /> }<br /> }<br /> free(Database);<br /> system("pause");<br /> return 0;<br />}</div> <div>void Register_New_Book(Book *Database,int *pHow_many)<br />{<br /> printf(" 제목 = ");<br /> scanf("%s",Database[*pHow_many-1].name);<br /> printf(" 출판 연/월/일 = ");<br /> scanf("%d %d %d",&Database[*pHow_many-1].publish_year,&Database[*pHow_many-1].publish_month,&Database[*pHow_many-1].publish_day);<br /> printf(" 일련번호 = ");<br /> scanf("%d",&Database[*pHow_many-1].serial_number);<br /> printf(" 저자 = ");<br /> scanf("%s",Database[*pHow_many-1].writer);<br /> printf(" 새로운 책\n"); <br /> printf(" { %s } 이(가) 등록되었습니다.\n",Database[*pHow_many-1].name);<br />}</div> <div>void Searching_Database(Book *Database,int *pHow_many)<br />{<br /> int choice=0;<br /> int i=0;<br /> Book Search;<br /> //책 제목, 출판 연월일, 일련번호 저자 뭘로 찾을지 검색<br /> //내용은 출력안해도딤 그건 3번에서할것이다.<br /> printf("어떤 정보로 검색하시겠습니까?\n");<br /> printf("1. 책제목\n");<br /> printf("2. 책출판 연/월/일\n");<br /> printf("3. 책일련번호\n");<br /> printf("4. 책저자\n");<br /> scanf("%d",&choice);<br /> if(choice==1)<br /> {<br /> printf("찾으시려는 책 제목 = ");<br /> scanf("%s",Search.name);<br /> for(i=0 ; i<*pHow_many ; i++)<br /> if(strcmp(Database[i].name,Search.name)==0) printf("찾았습니다. 문의하신 { %s } 는 %d번 입니다.\n",Search.name,i+1);<br /> }<br /> else if(choice==2)<br /> {<br /> printf("찾으시려는 책 출판 연/월/일 = ");<br /> scanf("%d %d %d",&Search.publish_year,&Search.publish_month,&Search.publish_day);<br /> for(i=0 ; i<*pHow_many ; i++)<br /> if(Database[i].publish_year==Search.publish_year && Database[i].publish_month==Search.publish_month && Database[i].publish_day==Search.publish_day)<br /> printf("찾았습니다. 문의하신 { %d년 %d월 %d일 } 출판한 책은 { %s } 로, %d번 입니다.\n",Search.publish_year,Search.publish_month,Search.publish_day,Database[i].name,i+1);<br /> }<br /> else if(choice==3)<br /> {<br /> printf("찾으시려는 책 일련번호 = ");<br /> scanf("%d",&Search.serial_number);<br /> for(i=0 ; i<*pHow_many ; i++)<br /> if(Database[i].serial_number==Search.serial_number) printf("찾았습니다. 문의하신 일련번호가 { %d } 인 책 { %s } 로, %d번 입니다.\n",Search.serial_number,Database[i].name,i+1);<br /> }<br /> else if(choice==4)<br /> {<br /> printf("찾으시려는 책 저자 = ");<br /> scanf("%s",Search.writer);<br /> for(i=0 ; i<*pHow_many ; i++)<br /> if(strcmp(Database[i].writer,Search.writer)==0) printf("찾았습니다. 문의하신 저자가 { %s } 인 책은 %d번 입니다.\n",Search.writer,i+1);<br /> }<br /> else<br /> {<br /> printf("제대로 입력 바랍니다.\n");<br /> Searching_Database(Database,pHow_many);<br /> }<br />}</div> <div>void Output_Book_Info(Book *Database,int *pHow_many)<br />{<br /> int search=0;<br /> if(search>*pHow_many || search<0)<br /> {<br /> printf("제대로 입력 바랍니다.\n");<br /> main();<br /> }<br /> printf("찾으시려는 책의 번호 = ");<br /> scanf("%d",&search);<br /> printf("No.%d 의 책 정보\n",search);<br /> printf("제목 = %s\n",Database[search-1].name);<br /> printf("출판 연/월/일 = %d/%d/%d\n",Database[search-1].publish_year,Database[search-1].publish_month,Database[search-1].publish_day);<br /> printf("일련번호 = %d\n",Database[search-1].serial_number);<br /> printf("저자 = %s\n",Database[search-1].writer);<br />}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.