Hallo, ich bin ein relativer Anfänger Programmierung betrifft. C ist meine erste Programmiersprache und in dieser versuche ich gerade ein Level-Editor für ein eigenes Spiel zu programmieren (in der konsole). Ich bin soweit fertig, bis auf den Fehler beim laden eines Levels (einlesen eines 2D char arrays aus einer Text datei). Das 2D Array, bzw. die Ausgabe sieht nach dem Laden anders aus als beim Speichern.
In der Anlage sind ein paar screenshots, bei "konsole1" sieht man das Feld vor dem Speichern, bei "datei" die Textdatei nach dem Speichern und bei "konsole2" das Feld nach dem einlesen. Das Feld ist langgezogen und mein "cursor", im Bild das X, springt dadurch auf der Y-Achse auch weiter als auf der X-Achse.
Ich habe die Vermutung das in der Datei möglicherweise ein Zeilenumbruch immer jeweils zu viel gespeichert wird.
Hier der Code wo das Feld gespeichert wird:
Hier wird das Feld aus einer Datei eingelesen:
Hier wird das Feld in der Konsole ausgegeben:
Ich würde mich über ein Tipp sehr freuen.
In der Anlage sind ein paar screenshots, bei "konsole1" sieht man das Feld vor dem Speichern, bei "datei" die Textdatei nach dem Speichern und bei "konsole2" das Feld nach dem einlesen. Das Feld ist langgezogen und mein "cursor", im Bild das X, springt dadurch auf der Y-Achse auch weiter als auf der X-Achse.
Ich habe die Vermutung das in der Datei möglicherweise ein Zeilenumbruch immer jeweils zu viel gespeichert wird.
Hier der Code wo das Feld gespeichert wird:
datei_wp = fopen(pfad_komplett,"w");
if(datei_wp==NULL)
{
fputs(inhalt, datei_wp); // speichert einige zahlenwerte
for(int j=0;j<length+1;j++) //speichert feld
{
fclose(datei_wp);
if(datei_wp==NULL)
{
printf("Fehler beim Erstellen, überprüfen Sie den Pfad!\n");
}fputs(inhalt, datei_wp); // speichert einige zahlenwerte
for(int j=0;j<length+1;j++) //speichert feld
{
for(int i=0;i<width+1;i++)
{
fprintf(datei_wp,"\n");
}{
fprintf(datei_wp,"%c", level[ j ][ i ]);
}fprintf(datei_wp,"\n");
fclose(datei_wp);
Hier wird das Feld aus einer Datei eingelesen:
if (zeilen_ueberspringen>0){
for(int j=0;j<=length;j++)
{
for(int i=0;i<zeilen_ueberspringen;i++){
fscanf(datei_rp,"%s",muell);
}
}fscanf(datei_rp,"%s",muell);
}
for(int j=0;j<=length;j++)
{
for (int i=0; i<=width;i++)
{
}{
fscanf(datei_rp,"%c",&level[ j] [ i ]);
}Hier wird das Feld in der Konsole ausgegeben:
for(int j=0;j<=length;j++)
{
{
for (int i=0; i<=width;i++)
{
printf("\n");
}{
printf("%c ", Feld[ j][ i]);
}printf("\n");
Ich würde mich über ein Tipp sehr freuen.