Mit einen einzelnen char in ein File schreiben
-
Hi,
ich würde gerne den HTTP Head vom restlichen File trennen hierzu gebe ich erstmal den gesammten empfangenen Datenstream in ein File aus danach Versuche ich diese entsprechend auszulesen :G_in = fopen ( "OUT.DAT" , "rb" ); //empfangene Daten in OUT.DAT G_Out = fopen( "FILE.DAT", "wb" ); //File ohne header soll nach FILE.DAT if (G_in == NULL) return; // obtain file size. fseek (G_in , 0 , SEEK_END); lSize = ftell (G_in); rewind (G_in); // allocate memory to contain the whole file. G_buffer = (char*) malloc (lSize); if (G_buffer == NULL) exit (2); // copy the file into the buffer. fread (G_buffer,1,lSize,G_in); G_zaehl = 0; BOOL G_headend = 0; while(G_zaehl<lSize){ if(!G_headend){ switch (G_buffer[G_zaehl]){ // Schlüsselfolge 13,10,13,10 markiert das Ende des Heads case 13: if(G_hit == 0) G_hit++; if(G_hit == 2) G_hit++; break; case 10: if(G_hit == 1) G_hit++; if(G_hit == 3) G_hit++; break; default: if(G_hit != 4) G_hit = 0; } if(G_hit == 4){ G_headend = 1; //Kopfende gefunden } } else{ //File wird geschrieben fwrite(G_buffer[G_zaehl], 1, 1, G_Out); //an dieser Stelle stürzt der Code ab } G_zaehl++; }
also das Problem liegt hier :
fwrite(G_buffer[G_zaehl], 1, 1, G_Out);
da das File auch 0-Bytes enthalten kann, ist es leider nicht möglich fputc() zu benutzen da das bei nem 0-Byte terminiert.
Gibt es eine andere Möglichkeit ein einzelnes Byte in eine Datei zu schreiben ?
-
Habs jetzt andesr gelöst:
anstatt jedes char einzen zu schreiben mach ichs sochar G_File[lSize-G_zaehl]; memcpy(G_File,G_buffer+G_zaehl,lSize-G_zaehl); fwrite(G_File, 1, lSize-G_zaehl, G_Out); break;