Gültigkeitsbereiche von Pointer



  • Hallo zusammen,

    folgendes Problem:

    Ich habe 2 Source Files. Test01.c und Test02.c. In Test01.C ist folgender struct definiert:

    typedef struct test01{
        char	var01[50];
        int		var02;
        FILE*	fd;
        void	(*func2)(int);
        void	(*func3)(int);
    }Test01;
    

    In Test02.c:

    typedef struct test02{
        char	var10[50];
        int		var20;
        void	(*func1)(Test01*);
    }Test02;
    

    in main.c:

    int main(){
    
        Test01 * t01 = calloc(1,sizeof(Test01));
        Test02 * t02 = calloc(1,sizeof(Test02));
    
        strcpy(t01->var01,"Filename");
        *t01->var02 = 10;
        t01->fd = fopen(t01->var01,"w+b");
    
        t02->func1 = &funct02; //Ist in Test02.c
        t02->func1(t01);
        return 0;
    
    }
    

    In der Funktion func1 in Test02.c sind die Werte von t01 nicht mehr gesetzt. Die Werte sind auf Null. warum? Ich habe doch Pointer. Warum sind die Werte nicht mehr da?

    Danke + Gruss,
    Haksi



  • Poste mal bitte noch die funct02() Funktion.

    Wenn du die Datei nicht öffnen konntest, ist t01->fp gleich NULL! Man sollte das sowieso immer erst prüfen. Vll. ist der Dateiname t01->var01 nicht richtig bzw. existiert nicht in diesem Verzeichnis. Und weiterhin vermisse ich noch ein

    fclose( t01->fp );
    

    .


Anmelden zum Antworten