Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

1

27.04.2005, 16:50

char* mit fwrite in Datei schreiben

Moinz.

Ich will eine Speicherfunktion schreiben, mit der meine Klassen gespeichert werden können. Problem habe ich nur bei char Pointern, die Pfadnamen für Modelle u.ä. enthalten, da VC ja nicht bekannt ist, wieviel Elemente der Zeiger enthält (es ist ja egtl ein Array), und somit immer nur das erste speichert. Was kann man da machen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

27.04.2005, 17:13

sind die strings nullterminiert ( was ich bei char* mal stark annehme ) gehts, sonst hast du ein problem ;D

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

27.04.2005, 17:27

ja sind sie, klar. aber schreibt c++ dann automatisch ohne weitere anweisungen den kompletten inhalt des char pointers?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

27.04.2005, 17:44

C++ schreibt gar nix ;)

du brauchst ja nur schauen wie lang dein string is und dann eben nur so viele bytes rausschreiben...

fwrite( pChar, 1, strlen( pChar )+1, pFile );

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

27.04.2005, 17:53

ach mist das würde zwar gehen, ist aber komplizierter als ich will....

ich hab mit das so vorgestellt wie david das mit den chunks macht, also zb

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct SBotChunk
{
    char* pcModelPath;
    ....
}

SBotChunk Chunk;
fwrite(&Chunk, sizeof(SBotChunk), 1, pFile);


Würde das dann so funktionieren? eher nicht oder?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

27.04.2005, 18:22

es würde funktionieren...
aber nicht so wie du willst, er würde nämlich nur den pointer speichern und der is in dem fall eher sinnlos ;)


so würds z.b. aber gehn:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct SBotChunk 
{ 
    char pcModelPath[MAX_PATH]; 
    .... 
} 

SBotChunk Chunk; 
fwrite(&Chunk, sizeof(SBotChunk), 1, pFile);

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

27.04.2005, 18:30

jo stimmt daran hatte ich nicht gedacht. ist dann unproblematisch wenn ich zB diese datei öffnen will oder? "..\\Data\\Testfile.xxx "

also quasi die übrigen stellen durch leerzeichen fülle

PD

unregistriert

8

27.04.2005, 18:36

na, die übrigen stellen sind egal weil ja so ziemlich jede String funktion beim \0 beendet ^^ Demnach kann danach stehen was will ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

27.04.2005, 18:52

Nur hast du dann ein prob mit langen Dateipfaden...ich speicher vor den string immer seine Länge....

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

27.04.2005, 21:12

naja, wer speichert denn so lange dateinamen!?
und in dem fall, is der pfad sicher relativ zum ordner wo die ganzen modelle liegen...

Werbeanzeige