2013-03-20 3 views
2

Вот часть кода, который не работает для меня. Я объявляю указатель на структуру, и я пытаюсь использовать ее для функции, хотя 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); 

ответ

3

Тип struct person имеет main объем, поэтому он не будет иметь тот же смысл в insert. Фактически, тип структуры, члены которого не были указаны, известен как неполный тип . Чтобы удалить эту ошибку, объявите свою структуру вне вашей функции.

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

/* Function declarations. */ 

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

Хорошо, что сработало красиво. Спасибо. 7. Мин, пока не получите правильное решение: P. – Lind