Hallo Zusammen,
Ich rätsele schon seit ein paar Tagen an diesem Problem. Ich schreibe zurzeit für ein Spiel einen kleinen Karten Compiler, welcher die Grunddaten einer Karte, bis jetzt nur die Spieler Anzahl und der Kartenname, speichern soll. So weit tut er das auch, allerdings gibt es Probleme beim einlesen des Kartennamens. Dies tut folgender Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
char puffer1;
std::string puffer2;
do
{
fread(&puffer1, sizeof(char), 1, file);
puffer2.append(&puffer1);
}
while(puffer5!=0);
|
Wenn Ich es debugge, liest er erst vier nullen und beginnt dann erst mit dem Namen (fand Ich heraus indem Ich das ganze in eine for Schleife steckte). Ich hatte das nicht im Code des Karten Compilers vorgesehen. Warum ist das so, und hat das irgendeine besondere Bewandtnis?
Hier der Code mit dem der Name in die Datei geschrieben wird:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
std::string Name;
...
std::string str=argv[i+1];
Name=new char[str.length()];
Name=str.data();
...
fseek(file, 0, SEEK_SET);
fwrite(&ID, sizeof(Name), 1, file);
fwrite(&Spieler, sizeof(Spieler), 1, file);
fwrite(&Name.c_str(), Name.length(), 1, file);
|
Das ganze kann Ich zwar mit fseek umgehen allerdings wäre es trotzdem schön wenn Ich das beheben könnte.