C언어 구조체 프로그램 - Ceon-eo gujoche peulogeulaem

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

struct _addbook {

char name[15];

char phone[18];

char address[50];

char birthday[14];

struct _addbook *link; 

};

typedef struct _addbook addbook;

void Insert(addbook*);   

void Delete(addbook*);

void Display(addbook*);

void Search(addbook*);

int main(void){

addbook *ptr;

int choice;

ptr = (addbook *)malloc(sizeof(addbook));   

ptr->link = NULL; 

do {    

printf("+------------+\n");

printf("| 주  소  록 |\n");

printf("+------------+\n");

printf("|(1) 등   록 |\n");

printf("|(2) 출   력 |\n");

printf("|(3) 검   색 |\n");

printf("|(4) 삭   제 |\n");

printf("|(5) 종   료 |\n");

printf("+------------+\n");

printf("\n원하는 작업을 입력하십시오. : ");

choice = getchar();

fflush(stdin);

switch (choice){

case '1':

printf("\n주소록 등록 작업입니다. 정보를 입력하십시오.\n");

Insert(ptr);

break;

case '2':

printf("\n주소록 출력 작업입니다. 현재 등록된 주소록은 아래와 같습니다.\n");

Display(ptr->link);

break;

case '3':

printf("\n주소록 검색 작업입니다. 정보를 입력하십시오.\n");

Search(ptr);

break;

case '4':

printf("\n주소록 삭제 작업입니다. 정보를 입력하십시오.\n");

Delete(ptr);

break;

case '5':

printf("\n종료합니다.\n");

break;

default:

printf("\n잘못된 값을 입력하였습니다.\n");

}

while (choice != '5');

}

void Insert(addbook *ptr){

int re;

while (ptr->link != NULL)

ptr = ptr->link;    

do{

ptr->link = (addbook*)malloc(sizeof(addbook));   

ptr = ptr->link;   

printf("이름 : ");

gets_s(ptr->name);

printf("전화번호 : ");

gets_s(ptr->phone);

printf("주소 : ");

gets_s(ptr->address);

printf("생일 : ");

gets_s(ptr->birthday);

printf("\n|등록완료|\n");

for (;;){

printf("\n계속 등록하시겠습니까?(Y|N) : ");

re = getchar();

fflush(stdin);

if (re != 'Y' && re != 'y' && re != 'N' && re != 'n'){

printf("\n잘못된 값을 입력하였습니다.\n다시 입력하여 주십시오.\n\n");

continue;

}

else

break;

}

while (re != 'n' && re != 'N');

ptr->link = NULL;

printf("\n");

}

void Delete(addbook *ptr){

addbook *temp;

char _name[15];

printf("삭제할 사람의 성명 : ");

gets_s(_name);

while (ptr->link != NULL){

temp = ptr;

ptr = ptr->link;

if (strcmp(_name, ptr->name) == 0){

temp->link = ptr->link;

free(ptr);

break;

}

}

return;

}

void Display(addbook *ptr){

printf("|주소록|\n");

printf("%-15s""성  명");

printf("%-18s""전화번호");

printf("%-50s""주  소");

printf("%-14s\n""생  일");

while (ptr != NULL){

printf("%-15s", ptr->name);

printf("%-18s", ptr->phone);

printf("%-50s", ptr->address);

printf("%-14s", ptr->birthday);

ptr = ptr->link;

printf("\n");

}

printf("\n");

}

void Search(addbook *ptr){

char _name[15];

printf("찾을 사람의 성명 : ");

gets_s(_name);

printf("\n|검색완료|\n");

printf("%-15s""성  명");

printf("%-18s""전화번호");

printf("%-50s""주  소");

printf("%-14s\n""생  일");

while (ptr != NULL){

if (strcmp(_name, ptr->name) == 0){

printf("%-15s", ptr->name);

printf("%-18s", ptr->phone);

printf("%-50s", ptr->address);

printf("%-14s", ptr->birthday);

printf("\n\n");

}

ptr = ptr->link;

}

}