Forum: PC-Programmierung fread, fwrite, fopen, fclose ftell, fseek und _read, _write, _open, _close, _lseeki64


von Gustl B. (-gb-)


Lesenswert?

Hallo,

ich habe erstmals in C mit großen Datei zu tun für die 32 Bits nicht 
ausreichen. Jetzt hatte ich immer diese f**** Funktionen verwendet wie 
fopen, fseek, ... aber die funktionieren jetzt nicht mehr. Nach etwas 
Googelei habe ich die _**** Funktionen von Microsoft gefunden. Das 
funktioniert auch alles ganz fein, aber es ist langsam. Ich habe nur die 
Funktionen ersetzt und die Datenrate bricht in etwa auf die Hälfte ein, 
sogar etwas drunter.

Gibt es da was brauchbareres modernes? Ich verwende Codeblocks mit dem 
MinGW Compiler auf Windows10.

Vielen Dank!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> ich habe erstmals in C mit großen Datei zu tun für die 32 Bits nicht
> ausreichen. Jetzt hatte ich immer diese f**** Funktionen verwendet wie
> fopen, fseek, ... aber die funktionieren jetzt nicht mehr.

Welche Funktionen hast Du denn vorher benutzt und warum funktionieren 
die bisher genutzten Funktionen bei großen Dateien nicht mehr?

> Windows10.

Ich nehme an: 64 bit.

: Bearbeitet durch Moderator
von Gustl B. (-gb-)


Lesenswert?

Vorher ftell, fseek und die haben nichtmehr richtig funktioniert. Also 
bin ich nach _lseeki64 gegangen aber dann musste ich auch fopen nach 
_open umbauen und so weiter.

Ja, 64 Bit.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Gibt es da was brauchbareres modernes?

Du könntest direkt die Funktionen aus der Win32-API verwenden.

CreateFile, SetFilePointer, ReadFile, WriteFile etc.

Die sehen schon seit Jahrzehnten auch eine Unterstützung für Dateigrößen 
jenseits der 4-GB-Grenze vor.

https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-createfilea

https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfilepointer

Sofern Du Dateien nur liest, oder aber beim Schreiben die Größe nicht 
änderst, könntest Du auch mit memory mapped files arbeiten.

https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createfilemappinga

https://docs.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-mapviewoffile

... um nur ein paar Einstiegspunkte zu nennen.

 - die werden

von Gustl B. (-gb-)


Lesenswert?

Das hatte ich mir in der Tat noch nicht angeguckt, Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.