Dynamisch strukturen reservieren



  • Hallo Leute

    Ich habe eine Struktur definiert und möchte diese dynamisch reservieren lassen, bzw anschließend übergeben.

    Siehe Code

    struct tage
    {
      char Beginn[6];
      char Ende[6];
    }
    struct vorlesungen
    {
      char Fach[128];
      struct tage Wochentag[6];
    }
    struct vorlesungen *pData;
    
    int main(void)
    {
      pData = (struct vorlesungen *)calloc(NOI, sizeof(struct vorlesungen));
      Input(pData);
      free(pData);
      return 0;
    }
    
    void Input(struct vorlesungen pData)
    {
      strcpy( (pData + 1)->Fach , "Mathe");
      strcpy( (pData + 1)->Wochentag[1].Beginn , "10:00");
    }
    

    Bekomme 18 Fehler!!

    Bitte um Hilfe

    tx MasterDitz



  • Einfach auf das hören, was dir der Compiler sagt.
    Der kann C++ besser als du.

    #include <cstring> //für strcpy
    
    using namespace std;
    
    void Input(struct vorlesungen* pData); // Vorwärtsdeklaration nicht vergessen
    
    struct tage 
    { 
      char Beginn[6]; 
      char Ende[6]; 
    }; //Semikolon!
    
    struct vorlesungen 
    { 
      char Fach[128]; 
      struct tage Wochentag[6]; 
    }; //Dito
    
    struct vorlesungen *pData; 
    
    int main(void) 
    { 
      pData = new(vorlesungen);  //The C++ Way
      Input(pData); 
      delete pData; 
      return 0; 
    } 
    
    void Input(struct vorlesungen* pData) // wir übergeben Pointer auf struct
    { 
      strcpy( (pData + 1)->Fach , "Mathe"); // wieso eigentlich (+ 1) ????
      strcpy( (pData + 1)->Wochentag[1].Beginn , "10:00"); 
    }
    


  • Wenn ich so drüber guck fällt mir sofort

    void Input(struct vorlesungen* pData)
    

    auf. Ich glaube es muss

    void Input(vorlesungen* pData)
    

    heißen. Dann aber die Vorwärtsdeklaration nach Der definition von Vorlesung...



  • struct muss man doch nur bei C explizit angeben bei Variablen und Typendeklaration.



  • Hä? Ich meine, das obere hast du geschrieben. Ich glaube das ist falsch...



  • Danke für die Rasche Hilfe

    Betreffend +1:
    Eigentlich will ich ein array von vorlesungen mit der Größe NOI und +1 sollte dann eigentlich +i heissen.

    lg



  • ness schrieb:

    Hä? Ich meine, das obere hast du geschrieben.

    *lol*
    Ja, genau, ich habs nur mitkopiert 😉

    Ich glaube das ist falsch...

    Naja, nicht falsch. Nur überflüssig.
    Schaden tut´s aber auch nicht.



  • Wie sieht dass bei einem array aus?

    pData = new(vorlesungeen[NOI]);
    pData[n]->Fach;
    

    Das geht irgendwie nicht.

    Bitte um Weiterhilfe



  • "Das geht irgendwie nicht" ist keine aussagekräftige Fehlerbeschreibung.
    Vertraue der Macht deines Compilers, Luke. Er wird dich leiten.


Anmelden zum Antworten