반응형
포인터 배열로 바꿔보자!!!
구조는 전에있던 도서관리과 똑같다!
app.c
#include "main.h" #include "book.h" // 1. 정적배열 도서관리 -> 도서 추가, 삭제, 검색(책이름으로), 출력(전체출력) void MemuDisplay() { puts("1. 도서 추가"); puts("2. 도서 삭제"); puts("3. 도서 검색"); puts("4. 도서 출력"); puts("0. 종료"); } int inputNo() { int No; printf("입력 :"); scanf("%d",&No); return No; } void selectMenu(int key,BOOK* (*bookList)[10]) { switch(key) { case 1: book_add(bookList); break; case 2: book_delete(bookList); break; case 3: book_seach(bookList); break; case 4: display(bookList); break; case 0: exit(0); default: puts("잘못된 값");break; } } void Run(BOOK* (*bookList)[10]) { book_array(bookList); int key =0; //printf("테스트\n---------------------------------\n"); //display(bookList); while(1) { //system("cls"); //display(bookList); MemuDisplay(); key = inputNo(); system("cls"); selectMenu(key,bookList); puts("계속하시려면 아무키나 누르세요!!"); getch(); } }
book.c
#include "main.h" //초기화 void book_array(BOOK* (*bookList)[10]) { int i; for(i=0;i<3;i++) { for(int j=0;jBookName = (char*)malloc(sizeof(char)*10); bookList[i][j]->BookName = NULL; //printf("테스트\n------------------------\n"); strcpy(bookList[i][j]->BookWriter,""); bookList[i][j]->BookPrice=NULL; } printf("테스트\n------------------------\n"); } } // 1. 정적배열 도서관리 -> 도서 추가, 삭제, 검색(책이름으로), 출력(전체출력) void display(BOOK* (*bookList)[10]) { int i; printf("도서 칸을 입력 :(0~2)"); scanf("%d",&i); for(int j=0;j BookName != NULL) { printf("도서이름 : %s \n도서저자 :%s\n도서가격 : %d\n--------------\n", bookList[i][j]->BookName,bookList[i][j]->BookWriter,bookList[i][j]->BookPrice); } } } // 삭제 void book_delete(BOOK* (*bookList)[10]) { int i,j,y,temp=0,a; char* name; char* name_1; printf("도서 칸을 입력 :(0~2)"); scanf("%d",&i); printf("삭제하실 도서이름 :"); name_1=(char*)malloc(sizeof(char)*10); name =(char*)malloc(sizeof(char)*10); scanf("%s",name); for(j=0;j BookName,NULL); strcpy(bookList[i][y]->BookWriter,NULL); bookList[i][y]->BookPrice=NULL; temp =1; break; } } if(temp ==1) break; } } // 검색 void book_seach(BOOK* (*bookList)[10]) { int i,j,y,temp=0; char* name; char* name_1; printf("도서 칸을 입력 :(1~3)"); scanf("%d",&i); printf("검색하실 도서이름 :"); name_1=(char*)malloc(sizeof(char)*10); name =(char*)malloc(sizeof(char)*10); scanf("%s",name); for(i=0;i BookName == NULL) { printf("도서 이름:"); scanf("%s",name); printf("도서 저자:"); scanf("%s",Writer); printf("도서 가격:"); scanf("%d",&Price); (*bookList)[i][j].BookName = (char*)malloc(sizeof(char)*10); strcpy((*bookList)[i][j].BookName,name); strcpy((*bookList)[i][j].BookWriter,Writer); (*bookList)[i][j].BookPrice = Price; break; } } }
main.c
#include "main.h" #include "app.h" void main() { // 3. 포인터 배열 // main --> BOOK* BookList[3][10]; BOOK* bookList[3][MAX]={NULL}; Run(bookList); }
app.h
//app.h void MemuDisplay(); int inputNo(); void selectMenu(int key,BOOK* (*bookList)[10]); void Run(BOOK* (*bookList)[10]);
book.h
void display(BOOK* (*bookList)[10]); void book_delete(BOOK* (*bookList)[10]); void book_seach(BOOK* (*bookList)[10]); void book_add(BOOK* (*bookList)[10]); void book_array(BOOK* (*bookList)[10]);
main.h
#include#include #include #include #include #define MAX 10 typedef struct book { char* BookName; char BookWriter[20]; int BookPrice; }BOOK;
'C, C++' 카테고리의 다른 글
[C] c for문으로 문자열 길이 구하기! (0) | 2014.11.18 |
---|---|
[C] 최대값, 최소값, 합계 구하기 (0) | 2014.11.18 |
[C] 도서관리(동적) (0) | 2014.11.18 |
[C] 포인터 공부 5 (0) | 2014.11.18 |
[C] 포인터 공부 4 (0) | 2014.11.18 |