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);
4

1 に答える 1

3

タイプstruct personにはmainスコープがあるため、で同じ意味を持つことはありませんinsert。実際、メンバーが指定されていない構造体タイプは、不完全タイプと呼ばれます。このエラーを取り除くには、関数の外部で構造を宣言します。

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

/* Function declarations. */

int main (void)
{
    /* ... */
}
于 2013-03-20T17:07:45.937 に答える