Byteweises Lesen/Schreiben
-
Hallo!
Ich will eine Datei binär lesen um sie per Socket zu versenden.
Welche Funktion ist empfehlenswerter?
open (kein ANSI) oder fgetc()?
MFG
-
fread
-
Hallo, ich will eine ganze datei auf einmal byteweise lesen.
dazu muss ich sizeof angeben.
Das blöde ist ich weiss nicht wie groß der Puffer sein muss,da ich ja nicht weiss wie groß die Datei ist?Habt ihr da ne (kurze) Lösung?
MFG
-
ich will eine ganze datei auf einmal byteweise lesen.
Das ist keine gute Idee.
-
ok wie dann?
du sagst mir nur dass es falsch ist aber nicht wie ich es lösen kann.
Ich erwarte ja keine fertig servierten Antworten nur Hilfe genug um dann selbst weitermachen zu können.Kannst du mir viell erklären wie ich das dann machen soll? (ohne die Größe der Datei ermitteln zu können?)
-
Um byteweise zu lesen (fgetc) brauchst Du die Größe nicht wissen. Du liest ein Byte nach dem anderen bis end-of-file (feof) erreicht ist.
Was aber meist sinnvoller ist, ist mit fread blockweise (sagen wir, 4 KB) zu lesen bis eof erreicht ist. Diese Blöcke kannst Du dann auch über den Socket rausschicken. Dazu verwendest Du am besten fread.
Solange Du nicht mit Exoten (Devices, Special Files) hantierst würde ich pauschal empfehlen die Funktionen des Standards zu verwenden.
-
Hallo, danke für die Hilfe
hmmm das heisst einfach fgetc nehmen?
mfg
-
lol. lern lesen.
-
grösse der datei ermitteln
int len=fseek(datei,0,SEEK_END);
-
@unreg: thx 4 fak0ring
@Muhi89: Naja mein Beitrag lief eigentlich mehr auf fread hinaus aber anyway, da letztendlich alles auf gepufferte Streams hinausläuft, ist das wie-lesen eher egal. Es hängt davon ab wie Du die Daten über den Socket schicken willst, und da bietet sich blockweises schreiben eher an, und dann mit fgetc die Blöcke vorher byteweise zusammenzusetzen halte ich für Unsinn.