Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

C++: Pfade aus Textdaei auslesen

Yves3 / 6 Antworten / Flachansicht Nickles

hallo

ich möchte die pfade für meine texturen aus einer textdaei auslesen.

wenn ich das so mache, funktioniert es:

fgets(Test,25,pDatei); // bei 24 zeichen langem pfad

D3DXLoadSurfaceFromFile(VecTileSurface[0], 0,0,Test,0,D3DX_DEFAULT,0,0);

dummerweise ist der pfad nicht immer gleich lang und wenn ich fogendes schreibe funktioniert es nicht:

fgets(Test,100,pDatei);

hab es auch schon mit tricks probiert:

fgets(Test,100,pDatei);
strncpy(Buffer,Text,sizeof(Text));

D3DXLoadSurfaceFromFile(VecTileSurface[0], 0,0,Buffer,0,D3DX_DEFAULT,0,0);

hat leider auch nicht funktioniert :-(
komischerweise wird der pfad immer richtig dargestellt, wenn ich ihn mit einer messagebox ausgebe.

ach ja meine textdatei:

4
1
3 3 3 3 3 3 3 3
1 1 0 0 0 0 1 2
1 1 0 2 0 0 1 2
1 3 0 0 3 0 1 2
0 1 0 0 0 0 1 2
1 1 0 1 0 0 1 2
..\\\\media\\\\tile_gras.png
..\\\\media\\\\tile_sand.png
..\\\\media\\\\tile_asphalt.png
..\\\\media\\\\tile_fels.png

bin jetzt volle 2 tage an diesem sch**** problem und bin langsam aber sicher am verzweifeln.

für antworten bin ich sehr dankbar!

bei Antwort benachrichtigen
mr.escape Yves3 „vielen dank euch beiden, dass ihr euch zeit genommen und mir so gute antworten...“
Optionen

Ich fürchte, IDE-ATAPIs variante hätte nicht funktioniert, denn zeilen werden in textdateien nicht mit '\0' getrennt (sondern je nach system mit CR, LF oder CRLF bzw. 0x0d, 0x0a oder 0x0d+0x0a).
Mit:
while((ucByte=(unsigned char)fgetc(DeinFile)) >= 0x20)
hingegen, kommt seine lösung eigentlich auf das gleiche raus, was ich vorschlug (er liest mit fgetc(), bis es reicht und ich lasse fgets() lesen und suche danach im speicher).
Gibt es zeilen, die länger als etwa 1000 zeichen sind, ist seine version besser, da mit CString vermutlich sehr lange zeichenketten möglich sind, dafür ist meine version sicher um größenordnungen schneller (würde aber nur bei sehr vielen verarbeiteten zeilen und häufig wiederholtem einlesen überhaupt nennenswert auffallen) und auch in C zu verwenden.

mr.escape

"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen