Datei binär auslesen und speichern

Hey
genau das hab ich ja vor! genauso hab ich mir mein Projekt vorgestellt.


du hast recht! auf eine diskette passen auch 1,44 MB jedoch sind disketten keine permanenten Datenträger. Lässt man disketten ne weile liegen und möchte dann irgendwann an die daten ran, sind die disketten meist defekt und bringen datenfehler.
Papier ist geduldig. Es ist eine alternative zur konventionellen datensicherung/archivierung
 
Ich möchte mich ja jetzt nich einmischen in dein Projekt, aber du schreibst du lernst Systemintegration, wenn ich mich nicht irre, ist das ein wenig vorbei an Systemintegration.
Sicher die sollten auch etwas mit Programmierung zu tun haben (Scripte usw...) aber dein Projekt wäre wenn dann nur was für einen Anwendungsentwickler.
Außerdem hast du da massive zeitliche Probleme, denn so weit ich das weiß hat ein Anwendungs entwickler 70 Stunden und ein Systemintegrator nur 35 Stunden Zeit für die Projektarbeit.
In dieser Zeit sollst du aber dein Projekt nicht nur runtertippen, sondern auch die Planung, Dokumentation und Präsentation machen.
Somit wäre das für einen Prüfer, der halbwegs was versteht sehr unglaubwürdig, ich würde behaupten das, das sogar für einen Anwendungsentwickler unglaubwürdig wäre.
Also ich will dir dein Projekt nicht schlechtreden im gegenteil, ich finde es eine klasse Idee, aber sei vorsichtig, daß du dich da in nix verrennts, sonst wirst du das bitter bereuen, denn weniger ist oft mehr.

Denk mal darüber nach.

Gruß Homer
 
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
Der dritte Parameter gibt die Anzahl der einzulesenden Objekte ein - das könnten zum Beispiel auch 64K sein, wenn du byteweise einliest (zweiter Parameter = 1).
 
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

d.h.:

buffer = die 64k zurückgegebenen daten
size = ?
count = anzahl zu lesene bytes?

komme da leicht durcheinander.
in c# hab ich das mit dem filestream so gemacht:

(in etwa)

read(buffer, pos, anzahl)

dh. von wo gelesen werden soll und wieviel.

aber bei fread komm ich da leicht durcheinander
 
Size ist die Grösse in Byte. Wenn du Bytes lesen willst, mach da 1 hin. Wenn du 15 Foo-Objekte einlesen willst, sieht es ungefähr so aus:
Code:
size_t geleseneFoos = fread( meinBuffer, sizeof( Foo ), 15, meinFile );
 
achso, ok, danke.
und was ist jetzt, wenn ich in 64 k-blöcken lesen will, die datei aber 128 k groß ist?
dann lese ich die ersten 64 k und dann muss ich dem ja sagen, dass im nächsten schritt die nächsten 64 k dran sind.
mit fseek?

und das wäre dann schneller, als alles auf einmal auszulesen ohne in blöcken?
wieso?:rolleyes:
 
dann lese ich die ersten 64 k und dann muss ich dem ja sagen, dass im nächsten schritt die nächsten 64 k dran sind.
mit fseek?
Du brauchst kein fseek - der Filepointer ist dann schon automatisch durch das fread um 64KB weitergesetzt.

und das wäre dann schneller, als alles auf einmal auszulesen ohne in blöcken?
Hm. Da kann man vermutlich keine allgemeingültige Antwort geben. Es hängt auch davon ab, wie die Daten verarbeitet werden sollen. Übrigens war das doch deine Idee mit den 64KB-Blöcken. Hast du da nicht was bei gedacht?
 
Ja ich weiss, dass es eher ein Thema für anwendungsentwickler ist. muss da mal schauen und mich mal eh bei der IHK informieren, inwiefern mein Thema ausbildungskonform ist.
Egal was da kommt...ich werde trotzdem versuchen, es durch zuziehen :-)
 
Zurück