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

int i=-1;

void insert(void);
void del(void);
void list(void);
void search(void);

int main(void)
{
 int n = 0;
 while (1)
 {
  printf("-------------전화번호부----------\n");
  printf("             1.입력\n");
  printf("             2.삭제\n");
  printf("             3,목록\n");
  printf("             4.검색\n");
  printf("             5.종료\n");
  scanf("%d", n);
  switch (n)
  {

  case 1:
   insert();
   break;
  case 2:
   del();
   break;
  case 3:
   list();
   break;
  case 4:
   search();
   break;
  case 5:
   return;
  default :
   printf("잘못 입력하였습니다.");
  }

 }

}

void insert(void) //입력
{
 i++;
 char n[15], pn[15];
 printf("이름을 입력하세요. (종료시 0 입력) \n");
 scanf("%s \n", n);
 strcpy(data[i].name, n);
 if (n == 0)
  return;
 printf("전화번호를 입력하세요. \n");
 scanf("%s \n", pn);
 strcpy(data[i].pnumber, pn);
 
}

void del(void)
{
 int result;
 char n[15];
 printf("삭제할 이름을 입력하세요. \n");
 scanf("%s \n", n);
 result = strcmp(data[i].name, n);
 if (result == 1) {
  printf("삭제하였습니다.\n");
  strcpy(data[i].name, data[i + 1].pnumber);
  strcpy(data[i].name, data[i + 1].pnumber);
 }
 else
  printf("없는 이름입니다.\n");
}

void list(void)
{
 int j;
 if (i == -1);
 printf("저장된 번호가 없습니다.");
 for (j = 0; j < i; j++) {
  printf("이름 : %s , 전화번호 : %s \n", data[i].name, data[i].pnumber);
 }
 
}
void search(void)
{
 int result;
 char n[15];
 printf("검색할 이름을 입력하시오. \n");
 scanf("%s \n", n);
 result = strcpy(data[i].name, data[i + 1].name);
}


search 부분 함수를 저다음에 뭐라고 해야할 지 모르겠습니다.

그리고 실행시키면 실행은 되는데 메뉴를 선택하면  위치를 기록하는데 액세스 위반이 되었다고 진행되지 않는데 왜그런건가요?