probleme mit verketten Listen



  • Hallo und zwar soll ich nach eine Aufgabenstellung, aus einer gespeicherten Datei Werte auslesen und in eine verkette Liste(malloc) speichern. Jedoch bekomme sehr viele Fehlermeldung(Fehler sind jetzt weg) und ich habe wohl noch ein Verständnisproblem leider weiß icht nicht woran es liegt.
    kann mir einer Helfen?

    Die Datei selbst steht schon zur Verüfung.
    Sorry 😮 hab den code vergessen

    struct arzneim {
       char aname[20]; // Name Arzneimittel
       struct{
           char name[20]; // Herstellername
           char ort[20];  // Herstellungsort
       } hersteller;  
       char haltbarkeit[9]; //Datum bis wann haltbar
       char chargennr[200];  //Chargennummer
       char wirkstoff[100];   // Wirkstoff
       int dform;             /* Darreichungsform 1 = Tabletten,
                                                  2 = Zäpfchen, 
                                                  3 = Pulver, 
                                                  4 = Tropfen, 
                                                  5 = Injektionslösung,
                                                  6 = Salbe*/
       arzneim *next;
    } a;
    
    int main()
    {
    	FILE *z;
    	char cDatei[100]="Text.txt";
    	bool weiter;
    	int i;
    	arzneim *aspeicher = NULL;
    	arzneim *zspeicher = NULL;
    
    	//_____________________________________________________________________________________________________________
    		printf("\n\nWillkommen bei der Arzneimitteldatenbank\n\n\nBitte geben Sie den zu bearbeiteten oder neu zu erstellenden Dateinamen ein\nEingabe: ");
    
    		printf("\nDateiname: ");
    		scanf("%s", &cDatei);	// Filenamen eingeben
    
    		if (i == 3) z = fopen(cDatei,"r");
    		if (z == NULL) exit(1);
    
    if ((zspeicher = (struct arzneim *) malloc (sizeof (struct arzneim))) != NULL){
    
    		fscanf(z, "%s", zspeicher->aname);
    		fscanf(z, "%s", zspeicher->hersteller.name);
    		fscanf(z, "%s", zspeicher->hersteller.ort);
    		fscanf(z, "%s", zspeicher->haltbarkeit);
    		fscanf(z, "%s", zspeicher->chargennr);
    		fscanf(z, "%s", zspeicher->wirkstoff);
    		fscanf(z, "%u", zspeicher->dform);
    
    		zspeicher->next = aspeicher;
    		aspeicher = zspeicher;
    }
    			int test = fclose(z);
    			if (test < 0){
    				printf("es ist ein Fehler aufgetreten!"); exit(0);
    			}
    	free(zspeicher);
    	return 0;
    }
    

    also jetzt speichert er ja die Daten in der Struktur und sammelt die da, aber wie kann ich auf diese zugreifen?
    Die Daten werden ja in der Struktur gespeichert, hängt er dann alle Datensätze die zusammengehören zusammen oder wie?
    😞 nochmal sorry



  • Und jetzt sollen wir erraten, wie dein Code aussieht und was für Fehler er produziert?

    Aus den Verfügbaren Informationen kann ich dir leider nur einen Tip geben: nimm dir jeden gemeldeten Fehler einzeln vor und mach dir klar, was der Compiler sagen will - nach der Korrektur verschwinden dann meist auch ein paar Folgefehler.



  • /*da inhalt ziemlich gleich zu CStolls posting wurde dieser geändert */

    ich bin mir jetzt nicht ganz sicher, ob deine pointer richtig gesetzt sind...

    müsste, soweit ich mich erinnern kann so lauten:

    struct arzneim *aspeicher = NULL;
    struct arzneim *zspeicher = NULL;
    

    des weiteren was mir auf die schnelle aufgefallen ist:

    struct name {
    /*blablabla*/
    };
    

    müsste es richtigerweise lauten anstatt

    struct name {
    /*blablabla*/
    }irgendwas;
    

Anmelden zum Antworten