-4

我正在尝试发送一组指向函数的指针。

每个指针都指向结构。

不知道该怎么做,请帮助我了解它的一般机构是什么。

谢谢。

#include <ansi_c.h>
#include <string.h>
#include <stdio.h>


void  sortbyname(struct worker   *p); 

void main()
{

    struct worker{
      char lastname[20],name[20];      
      int  age;int Seniority,salary,offdays [12];
    };

  int i,j;
  struct worker  employee[6],*pemp[6],*pS[6],*pN[6],*pill[6];


  for (i=0;i<6;i++)
  {
    pemp[i]=&employee[i];
    pS[i]=&employee[i];
    pN[i]=&employee[i];
    pill[i]=&employee[i];
  } 

  FILE *fp;
  fp=fopen("c:\\Users\\iliya\\Documents\\National Instruments\\CVI\\hw1-t2\\worker.txt","rt");       

  for (i=0;i<6;i++)
  {
    fscanf(fp,"%s",pemp[i]->lastname);
    fscanf(fp,"%s",pemp[i]->name); 
    fscanf(fp,"%d",&pemp[i]->age);
    fscanf(fp,"%d",&pemp[i]->Seniority);
    fscanf(fp,"%d",&pemp[i]->salary);
    for (j=0;j<12;j++)
    fscanf(fp,"%d",&pemp[i]->offdays[j]);

  } 

  sortbyname(pemp );
  //  sortbysalary();
  //  sortbydaysoff();             
  getchar();     
}`  
4

2 回答 2

1

这是您声明指针数组的方式:

<type> * <identifier_name> [size]

例如int *a[10] // It's the array of 10 integer pointers

struct 也类似:

例如

#define Max 10

typedef struct {

int a;
float b;

} Mystruct;

Mystruct * MystArray[Max];

您可以根据自己的选择编写函数:

<return type>func(Mystruct * MystArray[Max])
{
 //body of func
}

<return type>func(Mystruct **MystArray)
{
 //body of func
}

<return type>func(Mystruct * MystArray[])
{
 //body of func
}

任何方式数组衰减为函数调用中的指针

于 2012-11-07T16:50:58.637 回答
0

以下代码现在可以编译,但您需要填写其余代码。
希望这可以帮助。

#include <stdio.h>
#include <string.h>

struct worker{
    char lastname[20],name[20];
    int  age;int Seniority,salary,offdays [12];
};


void  sortbyname(struct worker   *p[])
{
}

int main()
{

  int i,j;
  struct worker  employee[6],*pemp[6],*pS[6],*pN[6],*pill[6];


  for (i=0;i<6;i++)
  {
    // do something

    //pemp[i]=&employee[i];
    //pS[i]=&employee[i];
    //pN[i]=&employee[i];
    //pill[i]=&employee[i];
  }

  FILE *fp;
  fp=fopen("worker.txt","rt");

  if (fp==NULL) {
      printf("\nfopen failed\n");
      return -1;
  } else {
      printf("\nfile found\n");
  }

  for (i=0;i<6;i++)
  {
    // do something
  }

  sortbyname(pemp );
  //  sortbysalary();
  //  sortbydaysoff();
  getchar();
}
于 2012-11-07T16:58:37.543 回答