#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
 struct person {      //이름과 번호 구조체
 char name[15];
 char pnumber[15];
 char blank[10];
}data[SIZE];     // 구조체 배열 선언

int i=-1;              //배열의 인덱스 값
void insert(void);  // 입력 함수
void del(void);   // 삭제 함수
void list(void);  // 목록 함수
void search(void);  // 검색 함수

FILE *fp;
int main(void)
{
 
 //fp = fopen("numberlist.txt", "a+t ");
 //fclose(fp);
 char n = 0;
 while (1)   //메뉴를 선택할 때까지 무한히 반복
 {
  printf("-------------전화번호부----------\n");
  printf("             1.입력\n");
  printf("             2.삭제\n");
  printf("             3,목록\n");
  printf("             4.검색\n");
  printf("             5.종료\n");
  printf("----------------------------------\n");
  scanf("%d", &n);      // 메뉴 번호 사용자로부터 입력받음
  switch (n)
  {
  case 1:
   insert();
   break;
  case 2:
   del();
   break;
  case 3:
   list();
   break;
  case 4:
   search();
   break;
  case 5:
   exit(1);
   return 0;
  default:
   printf("잘못 입력하였습니다.\n");
   break;

  }
 }


}
void insert(void) //입력 함수 생성
{
 char n[15], pn[15];    //이름과 번호를 저장하는 배열
 while (1)
 {
    
  i++;
  printf("이름을 입력하세요. (종료시 0 입력) \n");
  scanf("%s", n);
  if (n[0] == '0')
   return;
  strcpy(data[i].name, n);
  printf("전화번호를 입력하세요. \n");
  scanf("%s", pn); 
  strcpy(data[i].pnumber, pn);
  fp = fopen("numberlist.txt", "a+t");
  fprintf(fp, "이름 :%s  전화번호 :%s\n", data[i].name, data[i].pnumber);
  fclose(fp);
 }

}

void del(void)   //삭제 함수 생성
{
 int result,select=0;
 char n[15], pn[15];
 
 printf("이름으로 검색(1) 전화번호로 검색(2)");
 switch (select)
 {
 case 1:
  printf("삭제할 이름을 입력하세요. \n");
  scanf("%s", n);
  for (int s = 0; s < SIZE; s++){
   result = strcmp(data[s].name, n);
   if (result == 0) {
    strcpy(data[s].name, data[s + 1].name);
    strcpy(data[s].pnumber, data[s + 1].pnumber);
    strcpy(data[s + 1].name, "");
    strcpy(data[s + 1].pnumber, "");
    printf("삭제가 되었습니다.\n");
    i--;
    break;
   }
  }
 case 2:
  printf("삭제할 전화번호를 입력하세요. \n");
  scanf("%s", pn);
  for (int s = 0; s < SIZE; s++){
   result = strcmp(data[s].pnumber, n);
   if (result == 0) {
    strcpy(data[s].name, data[s + 1].name);
    strcpy(data[s].pnumber, data[s + 1].pnumber);
    strcpy(data[s + 1].name, "");
    strcpy(data[s + 1].pnumber, "");
    printf("삭제가 되었습니다.\n");
    i--;
    break;
   }
  }
 }
  if (result != 0)
   printf("없는 이름입니다.\n");
  return;
 
}

void list(void)
{

 fopen("numberlist.txt", "r");
 if (i == -1){
  printf("저장된 번호가 없습니다.\n");
  return;
 }
 for (int j = 0; j <i; j++) {
  fscanf(fp, "이름 :%s 전화번호 :%s \n", &data[j].name, &data[j].pnumber);
  fclose(fp);
 }
 for (int j = 0; j < i; j++) {
  printf("이름 :%s 전화번호 :%s \n", data[j].name, data[j].pnumber);
 }
 fclose(fp);
}
void search(void)
{
 int result;
 char n[15];
 printf("검색할 이름을 입력하시오. \n");
 scanf("%s", n);
 for (int s = 0; s <=i; s++){
  if (strstr(data[s].name, n) != NULL){
   printf("이름:%s전화번호:%s \n", data[s].name, data[s].pnumber);
   if (strstr(data[s].name, n) == NULL)
    printf("찾을 수 없습니다.");
  }
 }
}