Problem mit struct + arrays



  • Hallöle...
    ich versuche mich grad an meinem ersten C-Programm,
    habe aber schohn seit Tagen ein problem.
    Hier erstmal ein auszug aus dem SCode:

    [code (type="c++")]
    #include <stdio.h>
    #include <conio.h>
    #include <conio.c>
    #include <stdlib.h>
    #include <string.h>
    #define MAX_EING 500

    struct CDs {
    char Titel[256];
    char Bewertung[16];
    char Anzahl[16];
    char Bemerkung[256];
    char Art[64];
    };

    int nr=0; // währe static hier besser?!?

    int main(int argc, char *argv[])
    {

    struct CDs *f1[MAX_EING];
    void Eingabe(struct CDs **);

    Eingabe(f1);
    return 0;
    }

    void Eingabe(struct CDs *f1[MAX_EING])
    {

    do
    {
    clrscr();
    printf(" Eingabe NR %i\n", nr);
    printf(" Tittel:");
    fflush(stdin);
    gets(f1[nr]->Titel);

    printf(" Anzahl der CD's:");
    fflush(stdin);
    gets(f1[nr]->Anzahl);

    printf(" Notenbewertung:");
    fflush(stdin);
    gets(f1[nr]->Bewertung);

    printf(" Bemerkung:");
    fflush(stdin);
    gets(f1[nr]->Bemerkung);

    printf(" Art:");
    fflush(stdin);
    gets(f1[nr]->Art);

    printf("\n Bestaetigung: (eingabe %i)\n ------------\n\n Titel:\t\t\t%s\n Anzahl der CD's:\t%s\n Notenbewertung:\t%s\n Bemerkung:\t\t%s\n Genere:\t\t%s", nr, f1[nr]->Titel, f1[nr]->Anzahl, f1[nr]->Bewertung, f1[nr]->Bemerkung, f1[nr]->Art);
    nr++;

    printf("\n\nEnter drücken um zu weier einzugeben");
    fflush(stdin);
    getch();
    }while(nr != 10);
    printf("\nEnter drücken um zu beenden");
    fflush(stdin);
    getch();
    }

    [/cpp]

    So...
    Wenn man die 3te eingabe machen will (NR2) beendet er das Programm mit einer fehlermeldung a la
    "Project 1 hat in MSVCRT.DLL einen Fehler verursacht. (usw))".

    Ich hoffe, ich konnte mein Problem verständlich erklären *g*
    ansonsten..... Danke, und achja
    ich Arbeite mit Win me und DEV-C++.

    [ Dieser Beitrag wurde am 11.01.2003 um 17:02 Uhr von braindoc editiert. ]



  • #include <stdio.h>
    #include <conio.c>
    #define MAX_EING 500
    
    struct CDs {
    char Titel[256];
    char Bewertung[16];
    char Anzahl[16];
    char Bemerkung[256];
    char Art[64];
    };
    
    void Eingabe(struct CDs **);
    
    int nr;
    
    int main()
    {
     struct CDs *f1[MAX_EING];
     Eingabe(f1);
     return 0;
    }
    
    void Eingabe(struct CDs *f1[])
    {
     do
     {
      clrscr();
      f1[nr]=(struct CDs*)malloc(sizeof(struct CDs));
      printf(" Eingabe NR %i\n", nr+1);
      printf(" Titel: ");
      gets(f1[nr]->Titel);
    
      printf(" Anzahl der CD's: ");
      gets(f1[nr]->Anzahl);
    
      printf(" Notenbewertung: ");
      gets(f1[nr]->Bewertung);
    
      printf(" Bemerkung: ");
      gets(f1[nr]->Bemerkung);
    
      printf(" Art: ");
      gets(f1[nr]->Art);
    
      printf("\n Bestaetigung: (eingabe %i)\n ------------\n\n Titel:\t\t\t%s\n Anzahl der CD's:\t%s\n Notenbewertung:\t%s\n Bemerkung:\t\t%s\n Genre:\t\t%s", nr, f1[nr]->Titel, f1[nr]->Anzahl, f1[nr]->Bewertung, f1[nr]->Bemerkung, f1[nr]->Art);
      ++nr;
    
      printf("\n\n Enter druecken um weiter einzugeben");
      getch();
     }while(nr < 10);
    
     printf("\nEnter druecken um zu beenden");
     getch();
    }
    

    Man sollte noch die Speicherreserwierung überwachen und am Ende ihn freigeben.

    DEV-C++ hat Probleme es als *.c zu kompilieren, *.cpp klappt dagegen.

    MfG Lem


Anmelden zum Antworten