Probleme beim allokieren von typedef struct



  • Guten Morgen,

    ich moechte innerhalb eines typedef structs ein anderes typedef struct
    (re)allokieren. Ich habe es nicht zum funktionieren gebracht:

    Hier ist ein kleiner Code-Ausschnitt:

    typedef struct {
     double x;
     double y;
     double z;
    } double3;
    
    typedef struct {
     double3 *A;
     int L;
    } DATA3D;
    
    void
    construct (DATA3D *c, int S)
    {
      c->A = (double3 *) malloc(S * sizeof(double3));
      if (c->A == NULL) {
       printf("malloc failure. program terminated.\n");
       exit(EXIT_FAILURE);
      }
    
    }
    
    void
    reconstruct (DATA3D *c, int S)
    {
      c->A = (double3 *) realloc(A->c, S * sizeof(double));
      if (c->A == NULL) {
       printf("realloc failure. program terminated.\n");
       exit(EXIT_FAILURE);
      }
    
    }
    
    DATA3D *
    coordinates (FILE *file)
    {
    
     int i = 0, l = 100;
     double x, y, z;
     DATA3D *c = NULL;
    
     construct(&c, l);
    
     while(fscanf(file, "%lf %lf %lf", &x, &y, &z) == 3) {
      if (l < (i+30)) {
       l *= 10;
       reconstruct(&c, l);
      }
      c->A[i]->x = x;
      c->A[i]->y = y;
      c->A[i]->z = z;
      i += 1;
     }
    
     c.L = l;
    
     return c;
    
    }
    
    int
    main (void)
    {
    
     int i = 0;
     DATA3D *a = NULL;
     FILE *in = fopen("haha.in", "r");
    
     *a = coordinates(in);
    
     for (i=0; i<a.L; i++)
      a->A[i]->x = sqrt(a->A[i]->x)) + 0.5;
    
     return EXIT_SUCCESS;
    
    }
    

    Ich waere euch sehr dankbar, wenn Ihr drauf gucken und mir weiter helfen
    koenntet.

    Viele Gruesse,
    simsa



  • in zeile 44 data3d *c=null ist mist.

    so gehts ...

    data3d c;
    construct (&c, .....



  • danke schoen.

    Gibt es eigentlich ein gutes Tutorial, wo man das mit den Zeigern einfach
    versteht?

    Gruesse,
    simsa



  • simsa schrieb:

    danke schoen.

    Gibt es eigentlich ein gutes Tutorial, wo man das mit den Zeigern einfach
    versteht?

    Gruesse,
    simsa

    du musst dir einfach im kopf darüber klar werden was zeiger und adressen sind. dann verstehst du das.



  • pittbull schrieb:

    du musst dir einfach im kopf darüber klar werden was zeiger und adressen sind. dann verstehst du das.

    das denke ich mir auch immer 😉

    einen schoenen sonntag noch, simsa


Anmelden zum Antworten