fread ließt nicht ordenlich ein
-
also ich meine der wird intern wohl size * count direkt einlesen.
-
benutz einfach die datei ein/ausgabe möglichkeiten von c++. da gibts nicht so ein behinderten count parameter.
-
so sieht fread bei visual c++ aus. skippy könnte recht haben mit dem byteweise...
-
oder doch nicht:
da wird ja folgendes gemacht:
if ( (count = total = size * num) == 0 )
na ja ich halt mich besser raus.
-
@denker
if ( (count = total = size * num) == 0 )Es wird nicht byteweise gelesen. Files sind gepuffert und es wird size * num auf einmal in den Ausgabebuffer kopiert ( wenn genug im inputbuffer ist ).
Kurt
-
jo alles klar danke. hatte das stückchen ja auch schon entdeckt aber der quelltext ist ziemlich kompliziert geschrieben. da kann man sich nie so sicher sein.

ich hab auch mit nem api spy programm nachgeguckt. dort wird ReadFile mit 4096 aufgerufen. also skippy das kannste beruhigt benutzen, wobei ich nicht ganz verstehen kann warum du c und c++ so mischt. dein quelltext sieht nach c mit klassen aus.

-
so ich habe das jetzt so gemacht (funktioniert auch)
while(!feof(resource)) { sizeRead=fread( buf,1, sizeof(buf)-1, resource); buf [24] = '\0'; if(feof(resource))continue; send(s_, buf, sizeRead, 0); } } fclose(resource); }hab dazu ne frage zu folgender zeile buf [24] = '\0';
müsste ich das jetzt nich ersetzen durch buf [sizeRead+1] = '\0';
-
Das mit dem feof haste ja scheisse gemacht.
-
@hinweis wieso? hat das nen speziellen grund oder nur aus geschwindigkeitsgründen
@denker ich nutze dewegen beides (c und c++) da sich manche sachen eben besser oder schneller in c schreiben lassen oder die c funktion eben von den parametern einfach besser in dem funktionsablauf des programmes passt
wenn ich assembler können würde würdich sogar versuchen bestimmte sachen eben mit eingebauten assembler machen
übrigens das dateien gebuffert ausgelesen werden ist mir schon klar da windows daten immer nur sektorweise ausließt (daher selbst wenn man ein zeichen auslesen will ließt windows den kompletten sektor aus )
ich meinte eher die verarbeitung daher den overhat der schleifen
aber geeirt hab ich mich trotzdem fread arbeitet immer byteweise schön zusehen war
an eurem zitierten beispiel
if ( (count = total = size * num) == 0 )und weiter unten folgte nämlich die mainloop(so in der art)
while(count >= 0)
{
lese und verabreite dateicount--
}also ist es egal da die funktion ja auch nur bytweise arbeitet
-
Dieses --count passiert nur in einem speziellen Fall!
Die Funktion arbeitet nicht byteweise.