Das Lesen einer Datei C mit Datei-Deskriptor
Ich möchte aus einer Datei zu Lesen, indem Sie über Datei-Deskriptor. Ich kann nicht den Namen verwenden, da die Zuordnung Regeln.
Ich erhalten Sie durch den Aufruf open
und es funktioniert gut. In diesem moment weiß ich, dass ich die read()
- Funktion, um Lesen zu können. Mein problem ist, dass read()
Funktion benötigt als argument den Anzahl der bytes zu Lesen, und ich will Lesen einer ganzen Zeile aus der Datei jedes mal, so dass ich nicht weiß, wie viele bytes zu Lesen.
Wenn ich zum Beispiel fscanf()
, es funktioniert mit einem simplen string-und ich nehme wieder die ganze Zeile, wie ich will. Also meine Frage ist:
Gibt es eine Funktion wie fscanf()
die aufgerufen werden kann mit Datei-Deskriptor und nicht mit einem file-Zeiger?
- Also gut, man kann Puffer die ankommenden Zeichen, und einmal haben Sie genug (könnte ein Raum sein, oder \n), die Sie ausführen können sscanf auf den resultierenden Puffer. Beachten Sie, dass der Puffer nicht NUL-terminiert; Sie müssen hinzufügen, die NUL selbst.
- Warum bist du nicht mit stdio?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie sagen "zu verwenden
read()
" ich kann nicht sagen, wenn das Ihr Verständnis für die situation gegeben, die ein file-Deskriptor vonopen()
oder eine Beschränkung auf einige Art der Zuordnung.Wenn Sie einen Datei-Deskriptor, aber Sie sind noch komfortabler mit
fscanf()
und Freunde, verwenden Siefdopen()
zu bekommenFILE *
von deiner fd und weiter verwenden stdio.Intern verwendet es Funktionen wie
read()
in einem Puffer und verarbeitet dann diesen Puffer Lesen Sie Sie mitfscanf()
und Freunde.Was Sie tun könnten, ist Lesen ein Zeichen in einer Zeit, bis Sie gelesen haben, wird die gesamte Zeile, und erkennen ein '/n'. Da dies Hausaufgaben, ich werde nicht schreiben Sie es für Sie.
Ein paar Dinge zu warnen, aber.