2013-03-20 4 views
2

다음은 me.I에서 작동하지 않는 코드의 일부입니다. 구조체에 대한 포인터를 선언하고 함수에 사용하려고 시도하지만 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 personmain 범위를 가지고, 그래서 insert에서 같은 의미를가 없습니다. 사실 멤버가 지정되지 않은 구조 유형은 불완전 유형으로 알려져 있습니다. 이 오류를 제거하려면 구조를 함수 외부에 선언하십시오.

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

/* Function declarations. */ 

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

정상적으로 작동했습니다. 감사합니다 .7 정답을 얻을 때까지 최소 7 분. P. – Lind