構造体の配列を割り当てようとしています。値を初期化して関数内で値を出力しようとすると、すべてが正常に機能します。mainに同じ値を出力すると、プログラムがクラッシュします。
void getHeader(FILE* fpFile, HEADER *pHead)
{
   //  Local Declaration
   int worker, salesWeek, i;
   PERSON *list;
   //  Statement
   fscanf(fpFile, "%d %d", &worker, &salesWeek);
   list = aloPerson(worker);
   HEADER header = {worker, salesWeek, list};
   pHead = &header;
   return;
}// getHeader
PERSON* aloPerson(int worker)
{
   //  Local Declaration
   PERSON *list;
   //  Statement
   list =(PERSON*)calloc(worker, sizeof(PERSON));
   if(list == NULL)
   {
      MEM_ERROR, exit(103);
   }
   return list;
}// aloPerson
これは私の構造です。
typedef struct
{
int worker;
int weeks;
PERSON *pAry;
}HEADER;
これがメインです:
int main ( void )
{
//  Local Declaration
FILE* fpFile;
char  nameIn[25];
char *endPro = "end";
HEADER *pHead;
//  Statement
printf("Please select file to to open.\nsales or sales_2: ");
scanf("%s", nameIn);
FLUSH;
do
{
    valiFile(nameIn);
    fpFile = openFile(nameIn);
    getHeader(fpFile, pHead);
    readFile(fpFile, pHead);
    repeat(nameIn);
}
while(strcmp(nameIn, endPro) != 0);
return 0;