Ausgabe von Werten in Strukturen



  • Hey Leute, ich bins mal wieder.

    Habe momentan ein Programmrumpf bekommen. Die save Funktion habe ich ergänzt, da wir eine Art Tabelle in eine Datei schreiben sollen. Ich bekomme beim Compilen keine Fehlermeldungen angezeigt. Wenn ich das Programm ausführe und die mir meine erstelle Datei anschaue, dann ist der Filename korrekt in die Datei geschrieben worden. Für die Platzierung ist steht dort jedoch eine (zufällige 6-7 stellige Zahl).

    Wo liegt der Fehler beim Schreiben?

    # include <stdio.h>
    # include <string.h>
    
    # define DIM 18
    # define NAMEN_LAENGE 32
    
    typedef struct 
    {
    	char mannschaft[NAMEN_LAENGE];
    	int platz ;
    	int punkte ;
    	int tore;
    	int gegentore;
    
    } bundesliga_tabelleneintrag ;
    
    typedef struct
    {
    	int tabellenlaenge;
    	bundesliga_tabelleneintrag tabellenzeile[DIM];
    
    } bundesligatabelle;
    
    void save(char *filename, bundesligatabelle *tab)
    {
    	bundesligatabelle bt;
    	FILE *f;
    	f=fopen("DATEIPFAD\\Datei.txt","w");
    	fprintf(f,"%s\n\n %s\n",filename,bt.tabellenzeile[0].platz);
    	fclose(f);
    }
    
    int main() 
    {
    	bundesligatabelle bt;
    
    	bt. tabellenzeile[0]. platz = 1;
    	strcpy (bt. tabellenzeile [0]. mannschaft , "Hamburger SV");
    	bt. tabellenzeile[0]. punkte = 3;
    	bt. tabellenzeile[0]. tore = 4;
    	bt. tabellenzeile[0]. gegentore = 1;
    
    	bt. tabellenlaenge = 1;
    
    	char*filename="Bundesligatabelle";
    
    	save(filename, &bt);
    	return 0;
    }
    


  • du hast

    void save(char *filename, bundesligatabelle *tab)
    {
        bundesligatabelle bt;
    :
    :
    }
    

    und

    int main()
    {
        bundesligatabelle bt;
    :
    :
    }
    

    bt heisst zwar gleich, ist jedoch jeweils nur innerhalb der Funktionen verfügbar.

    void save(char *filename, bundesligatabelle *tab)
    {
        FILE *f;
        f=fopen("DATEIPFAD\\Datei.txt","w");
        fprintf(f,"%s\n\n %s\n",filename,tab->tabellenzeile[0].platz);
        fclose(f);
    }
    


  • wie es der zufall so will,scheint der autor mit mir zu studieren 😉
    hab mich also dementsprechend auch mal an die aufgabe gemacht und habe folgendes gemacht,um erst einmal den gesamten inhalt der tabelle in meine txt zu schreiben.

    //Schreiben in Datei
    	bt.tabellenlaenge = 2;   //Hier anzahl der mannschaften eintragen
    	int z;
    	FILE *ausg;
    	ausg= fopen("tab.txt","w");
    	for(z=0;z<bt.tabellenlaenge;z++){
    	fprintf(ausg,"%s %d %d %d %d\n",bt.tabellenzeile[z].mannschaft,bt.tabellenzeile[z].platz,bt.tabellenzeile[z].punkte,bt.tabellenzeile[z].tore,bt.tabellenzeile[z].gegentore);
    	}
    	fclose(ausg);
    
    	return 0;
    }
    

    so nun habe ich das zwar alles in meiner textdatei aber ich weißt nicht, wie ich das alles an die funktion

    void save(char *filename, bundesligatabelle *tab)
    

    übergeben kann.weil ich dieser ja zunächst den dateinamen und die gesamte tabelle übergeben muss.check ich iwie nich 😉
    hat wer nen tipp?



  • moin, glaube du hast die aufgabe falsch verstanden... die aufgabe ist es alles was du benötigst um zeichen in deine datei zu schreiben(zeiger erstellen, datei erstellen, reinschreiben mit fprintf) in der funktion save machen sollst..

    dazu musst du die struktur an die neue funktion 'save' übergeben, damit sie darauf zugreifen kann also:

    save("filename",&bt);
    

    so übergibst du die struktur an die funktion mit dem typedef für 'bundesligatabelle' bzw. 'bt'


Log in to reply