Problem mit Strukturvariablen in einer Klasse



  • Das ist meine Struktur:

    struct cmrad
    {
           char hersteller[30];
           char modell[20];
           int kw;
           int ccm;
           float preis;
           int baujahr;
    };
    

    Das ist die Klasse in der die Variable vom Typ cmrad enthalten ist:
    (Die Methoden hab ich der Übersichtlichkeit halber weggelassen)

    class Datenbank
    {
          private:
                   char *dateiname;
                   int anz;
                   cmrad *mrad;
    };
    

    zu Beginn des Programm lege ich nun die Variable dynamisch als Array an, mit
    der Anzahl der Felder wie es der Benutzer wünscht.

    //Größe der Datendank wird dynamisch angelegt
         printf("Wieviele Datensaetze sollen angelegt werden?");
         scanf("%i",&datensaetze);
         mrad = new cmrad[datensaetze];
    

    nun möchte ich die Datensätze beschreiben, was ich wie folgt versuche:

    printf("Eingabe des Herstellernamens:");
    scanf("%s",&Datenbank::mrad->hersteller);
    fflush(stdin);
    printf("\nEingabe des Modells:");
    scanf("%s",&Datenbank::mrad->modell);
    fflush(stdin);
    printf("\nEingabe der KW:");
    scanf("%i",&Datenbank::mrad->kw);
    fflush(stdin);
    

    doch leider haben die Variablen nicht die eingegeben Werte sondern welche,
    die nichts mit meiner Eingabe zu tun haben 😞
    Ich hoffe ihr könnt mir helfen.

    mfg Ixtana



  • Hallo,

    Du würfelst C und C++ schwer durcheinander.

    btw. musst Du erst einmal eine Instanz der Klasse erzeugen - ein Objekt.

    Klasse ist wie der Bauplan eines Hauses.
    Das Objekt ist das Haus selbst.

    Du kannst zwar auf dem Bauplan vorsehen wo der Kühlschrank steht, aber Deine Einkäufe kannst Du deswegen noch nicht kühlen ;o)



  • Du erzeugst doch einen Array mit cmrad* mrad = new cmrad[x];!
    Daher musst du auch wie auf einen Array zugreifen:

    printf("Eingabe des Herstellernamens:");
    scanf("%s",&mrad[0].hersteller);
    fflush(stdin);
    printf("\nEingabe des Modells:");
    scanf("%s",&mrad[0].modell);
    fflush(stdin);
    printf("\nEingabe der KW:");
    scanf("%i",&mrad[0].kw);
    fflush(stdin);
    


  • Hallo,

    fflush(stdin) erzeugt undefiniertes Verhalten:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39349



  • ah nun klappt es 🙂
    vielen dank 🙂


Anmelden zum Antworten