Zeichen aus Datei lesen



  • Hallo,

    ich würde gerne aus einer Datei immer vier Zeichen lesen.
    ich habs auch soweit mit folgender Zeile hinbekommen

    fread(&buffer, 4, 1, zahl1);
    

    leider ist es jedoch so wenn z.b. 1,2 oder 3 zeichen übrig bleiben, dass diese nicht mehr gelesen werden.

    Kann ich irgendwie immer 4 Zeichen lesen und am Ende eben auch die restlichen 1,2 oder 3 Zeichen ??? Hat hier jemand eine geschickte Lösung für mein Problem?
    sorry bin Anfänger und wäre für Hilfe dankbar 🙂



  • Du musst die 4 und die 1 in der Parameterliste tauschen 😉

    Zur Erklärung: fread liest immer bis zu N Elemente der exakten Größe M (wobei N im Moment 1 und M 4 ist). Der Rückgabewert ist dann wieviele Elemente tatsächlich gelesen wurden. Im Moment wäre der Rückgabewert also immer 1. Willst Du nun also auch Restgrößen lesen, setzt Du die Elementgröße auf 1 und die Anzahl auf 4. Wenn fread dann 2 (statt 4) zurückgibt waren eben nur noch zwei Byte in der Datei.



  • danke für die antwort!

    also folgendes habe ich probiert

    [code]anzahl = fread(&buffer, 4, 1, zahl1); 
       		if(anzahl == 0)
       			fread(&buffer, 1, 4, zahl1); [/code]
    

    allerdings wenn nun 5 zeichen in der datei sind liest er jetzt die ersten 4 und dann die letzten 4 😕

    also quasi cffff steht in der datei
    ausgabe : cfff und ffff

    ich will aber das er nur noch die restlichen zeichen liesst, also in dem fall oben wäre es nur "f"



  • Newbie1234 schrieb:

    ich will aber das er nur noch die restlichen zeichen liesst, also in dem fall oben wäre es nur "f"

    Macht er doch. Er liest ein "f" und schreibt es an den Anfang des Buffers, der Rest des Buffers bleibt, wie er ist.
    Du musst eben anzahl statt 4 Zeichen ausgeben lassen.


Anmelden zum Antworten