Problem beim Schreiben/Lesen von Dateien



  • Hallo,
    ich habe hier einen Teil meines Problem-Quellcodes:

    #include <stdio.h>
    
    int main()
    {
    	int i;
    	char Stop[1];
    	int Datensaetze = 5;
    	struct Datensatz
    	{
    		char Name[50];
    		char Vorname[50];
    		char Strassenname[50];
    		char Hausnummer[50];
    		char Postleitzahl[50];
    		char Ort[50];
    		char Telefonnummer[50];
    	} Datenbank[Datensaetze];
    	i = 0;
    	FILE *Daten;
    	Daten = fopen("Daten.txt","w");
    	if(Daten == NULL)
    	{
    		fprintf(stdout,"\n\n\tFehler beim öffnen der Datei\n\n");
    	}
    	while(i < Datensaetze)
    	{
    		fprintf(stdout,"\nBitte geben Sie einen Namen an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Name[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Name);
    		fprintf(stdout,"\nBitte geben Sie einen Vornamen an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Vorname[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Vorname);
    		fprintf(stdout,"\nBitte geben Sie einen Strassennamen an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Strassenname[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Strassenname);
    		fprintf(stdout,"\nBitte geben Sie Hausnummer an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Hausnummer[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Hausnummer);
    		fprintf(stdout,"\nBitte geben Sie eine Postleitzahl an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Postleitzahl[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Postleitzahl);
    		fprintf(stdout,"\nBitte geben Sie einen Ort an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Ort[50]);
    		fprintf(Daten,"%s ",Datenbank[i].Ort);
    		fprintf(stdout,"\nBitte geben Sie eine Telefonnummer an: ");
    		fscanf(stdin,"%s",&Datenbank[i].Telefonnummer[50]);
    		fprintf(Daten,"%s\n",Datenbank[i].Telefonnummer);
    		fprintf(stdout,"\n\nWollen Sie einen weiteren Datensatz angeben? (J|N): ");
    		fscanf(stdin,"%s",&Stop[0]);
    		if(Stop[0] == 'N' || Stop[0] == 'n')
    		{
    			break;
    		}
    		++i;
    	}
    	fclose(Daten);
    }
    

    Code ist angepasst, normal nicht so trivial geschrieben.

    Warum kommt beim Kompilieren(MinGW) z.B. sowas dabei raus:

    ŒŽx= Name Nachname Str 1 plz Stadt
    

    Es geht um den Teil vor Name.

    Danke



  • ... &Datenbank[i].Name[50] ...
    

    Du erwartest nicht wirklich, dass du damit auf den Speicherbereich von Name schreibst, oder??

    Bei fprintf() verwendest du deine Arrays richtig, bei fscanf() seltsamerweise nicht!



  • Danke, ist bzw. war das erste Mal das ich mit Strukturen gearbeitet hab.



  • Gast² schrieb:

    Danke, ist bzw. war das erste Mal das ich mit Strukturen gearbeitet hab.

    Naja, mit der Struktur hat das weniger zu tun. Die hast du ja richtig verwendet :).



  • AJ schrieb:

    Gast² schrieb:

    Danke, ist bzw. war das erste Mal das ich mit Strukturen gearbeitet hab.

    Naja, mit der Struktur hat das weniger zu tun. Die hast du ja richtig verwendet :).

    Richtig. Aber leider hab ich falsch drauf zugegriffen 😃
    Naja egal, das "Programm" läuft jetzt.
    Danke nochmal 😉


Anmelden zum Antworten