putc und binärdateien
-
Hi!
Kann man putc bzw. getc auch bei Binärdateien verwänden? Mein Ziel wäre es, eine Datei stückchenweise auszulesen, zu senden und dann wieder zusammen zu bauen. Also einen Filetransfer über das Internet. Mit putc und getc kann ich stink normale Textdateien wunderschön schicken, doch mit dateien wie .jpg etc. kommt immer nur schwachsinn an. Ich schätze mal es liegt daran, wie ich auslese bzw. schreibe://Lese(beim Sender): fhandle = fopen(file_transfere[i].filename,"rb"); //öffnet die Datei binär zum Lesen if(fhandle == 0) {continue;} fseek(fhandle,file_transfere[i].position-1,SEEK_SET); //setzt den Cursor zur letzten gesendeten Stelle u = 0; do //Lest die Bytes aus der Datei aus { buffer2[u] = getc(fhandle); u++; }while(!feof(fhandle) && u <= transfer_size); u--; buffer2[u] = 0;//Schreiben (beim Empfänger): fhandle = fopen(/*file_transfere[i].filename*/"testtarget.txt","a+b"); //öffnet die Datei zum anhängen if(fhandle == 0) {continue;} u = -1; do { u++; putc(buffer[u],fhandle); }while(u < buffer_length-1);Was mache ich falsch?
Danke schon mal für eure Hilfe!
-
getc und putc sollten binär arbeiten
allerdings sehe ich keinen sende-code. die datei wird einfach nur in einen
buufer geschrieben bzw aus einem gelesen. wenn du die datei über das internet
versenden willst, vermute ich dass du mit sockets arbeitest. dann solltest du
nicht die ganze datei mit getc stückchenweise einlesen, sondern entweder
einzelne zeichen senden, oder buffer von ~1kb - 2kb senden. bei tcp kannst
du die ganze datei senden, aber dann lieber mit fread alles auf einmal einlesen