Zeiger in Funktion



  • Hallo.

    Ich habe viele Dateien die ich je in ein unsigned char* laden möchte. Damit der Code nicht allzugross wird, wollte ich eine Funktion haben wo ich die Variable wo der Dateiinhalt hinterlegt werden soll übergebe und den Pfad zur Datei.

    mal stichpunktartig umrissen dargestellt:

    LoadFile(unsigned char &xxx, char *FilePath)
    {
      handle = open(FilePath);
      if (handle)
      {
        filesize = FileSize(handle);
        xxx = (unsigned char*) malloc(filesize+1);
        read(handle,&xxx[0],filesize);
      }
    }
    
    unsigned char *file1,*file2,*file3;
    LoadFile(file1,path);
    LoadFile(file2,path);
    LoadFile(file3,path);
    
    // Darstellung des Inhalts aus file1 bis file3
    

    Das obige Beispiel hat leider Fehler, wie muss ich file1-3 der Funktion übergeben und wie muss der Funktionskopf/-inhalt ausschauen, um damit arbeiten zu können?



  • Erstmal ist "char&" nur in C++ erlaubt (C kennt noch keine Referenzen) und zweitens brauchst du hier Doppelpointer:

    typedef unsigned char BYTE;//ich bin schreibfaul ;)
    void LoadFile(BYTE** arr,char* path)
    {
      HANDLE h = open(FilePath);
      if (h)
      {
        filesize = FileSize(h);
        *xxx = (BYTE*) malloc(filesize+1);
        read(handle,*xxx,filesize);
      }
    }
    
    ...
    BYTE*file1;
    char path[]=...;
    LoadFile(&file1,path);
    ...
    free(file1);
    


  • Ahhhh, vielen lieben Dank, das hat mir sehr geholfen!! 👍



  • CStoll schrieb:

    (C kennt noch keine Referenzen)

    die wären auch absolut überflüssig in c


Anmelden zum Antworten