2012-11-07 80 views
-4

我想发送指向函数的指针数组。

每个指针都指向struct。

不知道该怎么做,请帮我理解它的一般身体是什么。

Thx。传递指针阵列

#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();  
}` 
+7

请发布您的代码和编译器错误。 – hmjd

+2

提供更多详细信息,包括您当前的代码 – jlarson

+6

并接受答案。 – md5

回答

1

这是你如何声明指针的数组:

<type> * <identifier_name> [size]

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

这对于结构也类似:

例如

#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 
} 

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

+0

Thx,你向我展示了如何声明struct的结构,但是我是否声明了一个函数,假设它是一个指针的arrumment arry? – user729975

+0

如果你同意接受答案或至少upvote它:'<返回类型> func(Mystruct ** Myargarray){/ /其余的身体}' – Omkant

+0

这是什么,但函数调用期间数组衰减指针 – Omkant

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(); 
}