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 so

    char 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;
    

Anmelden zum Antworten