warum geht diese fopen function nicht?
-
ftell() liefert dir nur die aktuelle Position des Dateizeigers zurück!
Nach dem Öffnen einer Datei ist der Zeiger normalerweise am Anfang und ftell() liefert 0.
Du solltest vorher mit fseek() den Dateizeiger auf das Ende setzen, dann ftell() aufrufen und dann wieder mit fseek() an den Anfang setzen!Oder du benutzt die WinAPI-Datei-Funktionen:
CreateFile() zum Datei öffnen
GetFileSize() zum Dateigröße holen
ReadFile() um was aus der Datei zu lesen
CloseHandle() um die Datei wieder zu schließen...
-
... und dann musst du eben new verwenden, um den Speicher zu reservieren

-
char *LoadFileToObj(char* file, HWND wind) { FILE *topen; if((topen = fopen(file, "rb")) != NULL) { int fileSize; fseek(topen, 0, SEEK_END); fileSize = ftell(topen); if(fileSize!=0) { char *buffer; buffer = new char[fileSize-4]; fseek(topen, 0, SEEK_SET); fread(buffer, 1, fileSize, topen); MessageBox(wind, buffer, "buffer", 0); fclose(topen); return buffer; } } return "error - could not read file!"; }so klappts! die -4 hab ich durch ausprobieren, kann sie mir aber nicht erklähren!
-
seltsam! Was kommt denn, wenn du -4 nicht mit angibst?
-
allokier mal ein zeichen mehr und setzte das letzte dann auf 0 damit du nen nullterminierten string hast
-
wenn ich die -4 weglasse hab ich 4 y's mit ´drüber hinten am string
-
-
ZeroMemory(buffer, fileSize); oder was? dann löscht er ja alles raus oO wie krieg ich denn dieses scheiss anhängsel da weg?
-
Das musst du natürlich vor dem Auslesen machen - direkt nachdem du dir den Speicher reserviert hast

-
ups ja klar
*paddel*