fread(buffer,1,1,file) --> Compilerwarnung!



  • hallo,

    wenn ich ein einzelnes char mit fread einlesen will, kommt eine compilerwarnung
    z.b.:

    char buffer;
    fread(buffer,1,1,file /* file wurde dafor richtig geöffnet */ );
    

    gcc schrieb:

    warning: passing argument 1 of 'fread' makes pointer from integ
    er without a cast [enabled by default]
    c:\program files (x86)\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/st
    dio.h:412:40: note: expected 'void *' but argument is of type 'char'

    versteh ich nicht so ganz, bzw. ich verstehe, dass das problem bei "char buffer" liegt, weil ein pointer erwartet wird, und kein einzelnes zeichen.

    soll ich da einfach umcasten?



  • Nope, du sollst nicht umcasten, sondern etwas übergeben, das Sinn macht. Wenn du tatsächlich nur ein einzelnes Zeichen aus der Datei lesen willst, dann musst du trotzdem einen Pointer auf dieses Zeichen übergeben und nicht das Zeichen selbst...



  • Dann übrgib doch die Adresse von dem Speicherplatz für das Zeichen.

    Du kannst buffer auch als Array mit einem Element anlegen

    char buffer[1];
    

    😃



  • Jop, wobei man sich in dem Fall auch überlegen könnte, einfach fgetc() zu verwenden... 😉



  • ...



  • hä? warum denn so kompliziert mit "char buffer[0]"?

    einfach die adresse von "buffer" übergeben, warum sollte das nicht gehen?

    char buffer;
    fread(&buffer,1,1,file);
    

    ???



  • einfach adresse übergeben schrieb:

    hä? warum denn so kompliziert mit "char buffer[0]"?

    einfach die adresse von "buffer" übergeben, warum sollte das nicht gehen?

    ???

    Man oh man.
    Da stand ... auch als Array ...
    und das güne Ding darunter sollte man auch nicht übersehen.


Anmelden zum Antworten