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!
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
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