안녕하세요.

기존에 배열형태로 출력하였던 구조체를 포인터를 선언하여

포린타 형태 ->로 바꿔서 컴파일 하려고 합니다.

따라서 포인터를 선언하고 모든 배열부분을 포린터형 ->으로

전환하였으나 컴파일 에러가 나네요.

포인터 선언부에 문제가 있는것 같은데 제가 가진 프린트애는 자세한 설명이 없어서 혹시 어떤 부분이 문제가 있는건지 궁금합니다


struct member *p;
struct member list[SIZE];
struct member *p = &list[SIZE];

list[SIZE].dob = &d;

포인터 선언부는 위와 같습니다




#include <stdio.h>
#include <stdlib.h>
#define SIZE 1000

struct date {
   char month[20];
   char day[20];
   char year[20];
}d;

struct member{
   char name[20];
   struct date *dob;
   char adress[20];
   char email[20];
   char number[20];
};

int menu,num,i,searchnumber,category,printout,j,yesorno;



struct member *p;
struct member list[SIZE];
struct member *p = &list[SIZE];    

list[SIZE].dob = &d;

char search[20];      
char delname[20];




void input(){

  
   printf("이름을 입력하세요\n");
   scanf("%s",p[num]->name);

   printf("생년월일중 월을 입력하세요\n");
   scanf("%s",p[num]->dob->month);

   printf("생년월일중 일을 입력하세요\n");
   scanf("%s",p[num]->dob->day);

   printf("생년월일중 년을 입력하세요\n");
   scanf("%s",p[num]->dob->year);

   printf("주소를 입력하세요\n");
   scanf("%s",p->[num]->adress);

   printf("메일을 입력하세요\n");
   scanf("%s",p[num]->email);

   printf("전화번호를 입력하세요\n");
   scanf("%s",p[num]->number);

   num++;
}



void research(){

   printf("검색할 단어를 입력하세요\n");
   scanf("%s",search);

   for(i=0;i<num;i++)
   {
      if( (strcmp(p[i]->name,search)==0) || (strcmp(p[i]->dob->month,search)==0) || (strcmp(p[i]->dob->day,search)==0) ||  
         (strcmp(p[i]->dob->year,search)==0)  || (strcmp(p[i]->adress,search)==0) || (strcmp(p[i]->number,search)==0) ||
         (strcmp(p[i]->email,search)==0))
      {
         printf("검색된 구조체의 정보는 다음과 같습니다\n\n");
         printf("이름:%s \n생년월일:%s %s %s \n주소:%s \n메일:%s \n번호:%s\n\n",p[i]->name,p[i]->dob->month,p[i]->dob->day,p[i]->dob->year,
            p[i]->adress,p[i]->email,p[i]->number);
      }                            
   };

   printf("모든 결과값 출력완료\n\n");
}


void print()
{

   while(1)
   {
      printf("출력을 원하는 매뉴를 선택하세요\n1.이름\n2.생년월일\n3.주소\n4.메일\n5.전화번호\n6.전체출력\n7.매뉴로\n");
      scanf("%d",&printout);

      if(printout==1)
      {
         printf("이름을 출력합니다\n");

         for(i=0;i<num;i++){
            printf("%d번 구조체\n",i);    
            printf("%s\n\n",p[i]->name);
         }
      }

      else if(printout==2)
      {
         printf("생년월일을 출력합니다\n");

         for(i=0;i<num;i++)
         {
            printf("%d번 구조체\n",i);
            printf("%s %s %s\n\n",p[i]->dob->month,p[i]->dob->day,p[i]->dob->year);
         }
      }

      else if(printout==3)
      {
         printf("주소를 출력합니다\n");

         for(i=0;i<num;i++)
         {
            printf("%d번 구조체\n",i);
            printf("%s\n\n",p[i]->adress);
         }
      }

      else if(printout==4)
      {
         printf("메일을 출력합니다\n");

         for(i=0;i<num;i++)
         {
            printf("%d번 구조체\n",i);
            printf("%s\n\n",p[i]->email);
         }
      }

      else if(printout==5)
      {
         printf("번호를 출력합니다\n");

         for(i=0;i<num;i++)
         {
            printf("%d번 구조체\n",i);
            printf("%s\n\n",p[i]->number);
         }
      }

      else if(printout==6)
      {
         printf("전체구조체를 출력합니다\n");

         for(i=0;i<num;i++)
         {
            printf("%d번 구조체\n\n이름:%s \n생년월일:%s %s %s \n주소:%s \n메일:%s \n번호:%s\n\n",i,p[i]->name,p[i]->dob->month,p[i]->dob->day,p[i]->dob->year,
              p[i]->adress,p[i]->email,p[i]->number);

         }
      }

      else if(printout==7)
      {
         break;
      }

      printf("\n모든 자료 출력\n\n");

   }
}

void run()
{
   num=0;
   while(1)
   {

      printf("\n매뉴 선택하세요.\n1.입력\n2.검색\n3.출력\n4.삭제\n5.종료\n현재 구조체 개수 = %d\n\n", num);
      scanf("%d",&menu);


      if(menu==1)
      {  
         input();
      }


      if(menu==2)
      {
         research();  
      }


      if(menu==3)
      {
         print();
      }

      if(menu==4)
      {

         printf("\n삭제할 구조체가 포함한 단어를 입력하세요\n");
         scanf("%s",&delname);

         printf("\n삭제할 구조체의 정보는 다음과 같습니다\n");


         for(i=0;i<num;i++)
         {
            if( (strcmp(p[i]->name,search)==0) || (strcmp(p[i]->dob->month,search)==0) || (strcmp(p[i]->dob->day,search)==0) ||  
            (strcmp(p[i]->dob->year,search)==0)  || (strcmp(p[i]->adress,search)==0) || (strcmp(p[i]->number,search)==0) ||
            (strcmp(p[i]->email,search)==0))
          {
               printf("이름:%s \n생년월일:%s %s %s \n주소:%s \n메일:%s \n번호:%s\n\n",p[i]->name,p[i]->dob->month,p[i]->dob->day,p[i]->dob->year,
              p[i]->adress,p[i]->email,p[i]->number);

               printf("삭제하시겠습니까? 1.예 2. 아니오\n");
               scanf("%d",&yesorno);

               if(yesorno==1)
               {
                  for(j=i;j<num-1;j++)
                  {
                     list[j] = list[j+1];
                  }
                  num--;
                  break;
               }
               else
               {
                  printf("매뉴로 이동합니다\n");
                  break;
               }  

            }                            
         }

         if(menu == 5)
         {
            exit(1);
            break;
         }


      }
      
   }

}

int main(void)
{
   run();
   return 0;

}