[C] array von stucts auslesen

Bgx

Grünschnabel

Compiler:MSVC++ 2008
Ich bin gerade dabei ein kleines Spiel mit Allegro zu programmieren und möchte, dass die Leveldaten aus einer Datei ausgelesen werden.
Außerdem habe ich mit Borland Turbo C++ 3.1 einen Leveleditor erstellt (Konsole) .
Mein Problem ist jetzt, dass ich die Levels die ich im Leveleditor erstellt habe auch wieder im Leveleditor auslesen kann aber nicht in meinem Spiel.
Nun wollte ich wissen ob es relevant ist, dass ich die beiden Programme mit unterschiedlichen Compilern geschrieben habe oder ob ich irgendeinen anderen Fehler gemacht habe.

Hier der Code aus dem Levelcreator
Code:
/*Nach der eingabe des Nutzers in Datei schreiben*/
FILE *ptfile;
ptfile=fopen("Data.dat","w");
fwrite(ptdata,sizeof(struct leveldatas),angriffswellen,ptfile);
fclose(ptfile);
free(ptdata);
/*Zum Test ob irgendwelche Fehler gemacht wurden (kommt wieder weg)*/
ptfile=fopen("Data.dat","r");
fread(&temp,sizeof(struct leveldatas),1,ptfile);
printf("%i",temp.waves);
ptdata=(struct leveldatas *)malloc(sizeof(struct leveldatas)*temp.waves);
fseek(ptfile,0,0);
fread(ptdata,sizeof(struct leveldatas),temp.waves,ptfile);
printf("%i,%i,%i",ptdata[0].zeilen,ptdata[1].zeilen,ptdata[2].zeilen);
fclose(ptfile);
free(ptdata);

Und hier der Code aus dem Spiel
Code:
FILE *ptfile;
ptfile=fopen(dateipfad,"r");
fseek(ptfile,0,0);
fread(&temp,sizeof(struct leveldatas),1,ptfile);
gegners->leveldata=(struct leveldatas *)malloc(sizeof(struct leveldatas)*temp.waves);
/*gegners ist eine Struktur in der sich ein Zeiger mit Namen leveldata auf struct leveldatas befindet*/
fseek(ptfile,0,0);
fread(gegners->leveldata,sizeof(struct leveldatas),temp.waves,ptfile);

hier noch die Struktur (bei beiden genau gleich)
Code:
struct leveldatas
{
	int waves;
	int zeilen;
	int spalten;
	int type;
	int form;
};
 
Zuletzt bearbeitet:
Da fehlt doch wo temp definiert ist usw. ... wenn dann bitte vollständig und C++-Codeformatierung bitte.
 
Hmm..
temp ist bei beiden Codes auch eine Struktur vom Typ leveldatas und wird früher im Programm initialisiert
angriffswellen ist die Anzahl (vom Benuetzer eingegebenen) angriffswellen. Mit Hillfe von ihr wird der Zeiger ptdata auf ein Feld von leveldatas gesetzt
Code:
ptdata=(struct leveldatas*)malloc(sizeof(struct leveldatas)*angriffswellen);

Aber eigentlich wollte ich erst mal wissen ob es an den verschiedenen Compilern liegen kann oder ob das keinen Unterschied machen dürfte.
 
So ich hab mein Problem behoben.
Es macht tatsächlich einen Unterschied ob ich das ganze in msvc++ oder borland mache.
Habe jetzt den Levelcreator so verändert dass ich ihn in msvc compilieren konnte und es geht jetzt. (Sry hätt ich können gleich probieren aber ich wusste nicht wie ich die ganzen funktionen (kbhit(),gettime... ) in dem Compiler benutzen kann (sind ja andere Funktionen))
 
Zurück