在函数中声明的结构指针

时间:2013-03-20 17:05:44

标签: c function pointers structure

这是代码中不适用于我的部分。我正在声明一个指向结构的指针,我尝试在函数上使用它,尽管c表示它无法将主人转换为人。

void display (char *s2,FILE *f1,int max);
void insert (FILE  *f1, struct person *p1);
void deletestring (FILE *f1,FILE *f2,char *s2,char *s1,char *file1,char *file2,int max);
void edit (FILE *f1,FILE *f2,char *s2,char *s1,char *file1,char *file2,struct person *p1,int max);
int main ()
{
    char s1[MAX],s2[MAX];
    FILE *f2,*f1;
    struct person
    {
           char id[MIN];
           char emer[MIN];
           char mbiemer[MIN];
           };
    struct person p1;
    struct person *pp1;
    pp1 = &p1;
    char *file1 = "f1.txt";
    char *file2 = "f2.txt";

    int zgjedhja=1;
    printf("Programi funksionon sipas shpjegimit \n :");
    printf("Shtypni 1 per te shtuar nje person \n Shtypni 2 per te ndryshuar informacionin e nje personi \n Shtypni 3 per te shfaqur te dhenat \n Shtypni 4 per te fshire nje person \n Shtypni -1 per te dale nga programi \n ");

    while (zgjedhja != -1 )
    {
          printf("Jepni zgjedhjen tuaj \n ");
          scanf(" %d " , & zgjedhja );
          switch (zgjedhja)
          {
                 case 1:      
                 f1=fopen(file1,"a");
                 insert (f1,pp1);

1 个答案:

答案 0 :(得分:3)

struct person类型具有main范围,因此insert中的含义不同。实际上,未指定成员的结构类型称为不完整类型。要删除此错误,请在函数之外声明您的结构。

struct person
{
    /* ... */
};

/* Function declarations. */

int main (void)
{
    /* ... */
}