fwrite problem mit referenzen und pointern



  • Hallo!

    Ich habe mein zuvor funktionierendes Programm in Funktionen aufgeteilt,
    nun schaffe ich es aber nicht mehr, Referenzen bzw. Pointer so zu setzen,
    damit fwrite wieder seinen Dienst tut!

    Ich hab schon alles mögliche probiert, komme aber zu nichts sinnvollem!

    Es handelt sich um folgenden Code:

    int read_file(short *stream);
    int write_file(short *stream);
    
    int main(int argc, char *argv[])
    {
      short *stream = NULL;
      read_file(stream);
      write_file(stream);
    }
    
    int read_file(short *stream)
    {
      stream = malloc(length_lb * sizeof(short));
    
      for(i = 0; i <= length_lb; i++)
        fread(&stream[i], 1, 1, input);
    }
    
    int write_file(short *stream)
    {
      for(i = 0; i < length_lb; i++)
        fwrite(&stream[i], 1, 1, output);    //HIER LIEGT DAS PROBLEM
    }
    

    Bin für jede Hilfe dankbar!

    mfg



  • Ich glaub es war doch schon zu spät, hab den Fehler selbst gefunden.

    Den Speicher allozieren, sollte man doch im main(), damit man 'normal' mit den Variablen in den Funktionen arbeiten kann!

    mfg



  • Den Speicher allozieren kannst du auch in der Funktion, aber dann benötigst du einen Doppel-Pointer, um dessen Adresse auch ans Hauptprogramm zurückgeben zu können.

    int read_file(short** stream)
    {
      *stream=malloc(..);
      ...
    }
    

    (übrigens verschwendest du die Hälfte deines Speichers, wenn du in einen short-Datenblock (idR 2..4 Byte pro Element) einzelne char's einliest)


Log in to reply