2012-11-07 82 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(); 
}