Datei aufrufen in C

ch275

Grünschnabel
Hallo.

Ich soll ein Lernprogramm zur Multiplikation schreiben. Das funktioniert auch soweit. Mein Problem ist aber, dass am Ende der Name des Benutzers eingelesen und zusammen mit seiner Fehlerzahl in einer Datei highscore.dat gespeichert werden soll, in der Form:

Name: Maria, Fehler: 1

Eine Sortierung muss nicht erfolgen.

Ich bekomme schon das Öffnen der Datei nicht richtig hin, gescheige denn, darin zu schreiben.

Kann mir da jemand helfen? Hier ist mein Code. Die Funktion Multiplikation lasse ich mal weg.
Code:
int main(){

	mult (x,y);

	for(j=0; j<30; j++){
	zeichenkette[j]=0;
	}
	
	printf("Bitte Namen eingeben: \n");
	gets(name);

	strcpy(zeichenkette, "Name: ");
	strcat(zeichenkette, "%s, ", name);
	strcat(zeichenkette, "Fehler: ");
	strcat(zeichenkette, "%d", anzahl_fehler);


	FILE=fopen("highscore.dat", "wb");
	fprintf(highscore.dat, "%30s", zeichenkette);
	int fclose(FILE *highscore);

	return 0;
}
 
Hi

Bitte in Zukunft Code in [code=cpp]...[/code] schreiben!

Warum stopfst du erst alles in zeichenkette?
Du musst ja nicht alles in einem Durchgang in die Datei schreiben.

Außerdem willst du wahrscheinlich, wenn du das Programm öfter aufrufst, alle Einträge in der Datei haben und nicht nur den letzten?
Dann musst du beim fopen statt "wb" "ab" nehmen.
Und wieso überhaupt "...b"?
Du willst einen String und ein int reinschreiben, sodass es für Menschen auch lesbar ist. Da gehört kein b hin.

C++:
FILE *datei;
datei=fopen("highscore.dat", "a");
fprintf(datei,"%s hat %d Punkte\n",name,punkte);
fclose(datei);

Gruß
 
Hallo,

erstmal vorweg: füge deinen Code bitte zwischen die Tags [c] ... [/c] ein. Das erleichert die Lesbarkeit enorm.

Dir scheinen noch einige Grundlagen in C zu fehlen, da die Dateifunktionen einige heftige Fehler enthalten. Ich korrigiere mal nur die betreffenden 3 Zeilen. Rekapituliere bitte nochmal die Themen Variablendeklaration und Funktionsaufrufe und schaue dir die Verwendung von "fprintf" an.
C:
FILE fp;
fp = fopen( "highscore.dat", "wb" );

if( fp ) /* immer den Rueckgabewert testen! */
{
    fprintf( fp, "%30s", zeichenkette );
    fclose( fp );

}
Gruß
MCoder
 
Zurück