Textstreams und binäre Streams
Ein Textstream besteht aus einer oder mehreren Textzeilen, die in eine textorientierte Anzeige geschrieben werden können, sodass sie gelesen werden können. Wenn es aus einem Textstream vorliest, liest das Programm am Ende jeder Zeile eine Neue zeile vor. Wenn es in einen Textstream schreibt, schreibt das Programm eine Neue zeile, um das Ende einer Zeile zu signalisieren. Um unterschiedliche Konventionen in Zielumgebungen für die Darstellung von Text in Dateien einander zuzuordnen, können die Bibliotheksfunktionen die Anzahl und Darstellungen der Zeichen ändern, die zwischen dem Programm und einem Textstream übertragen werden.
Die Positionierung innerhalb eines Textstreams ist begrenzt. Sie können den aktuellen Dateipositionsindikator abrufen, indem Sie aufrufen fgetpos
oder ftell
. Sie können einen Textstrom an einer Position positionieren, die auf diese Weise abgerufen wurde, oder am Anfang oder Ende des Datenstroms, indem Sie den Datenstrom aufrufen fsetpos
oder fseek
. Alle anderen Positionsänderungen werden möglicherweise nicht unterstützt.
Für maximale Portabilität sollte das Programm nicht schreiben:
- Leere Dateien
- Leerzeichen am Ende einer Zeile
- Teilzeilen (durch Weglassen der Neuen Zeile am Ende einer Datei).
- Andere Zeichen als die druckbaren Zeichen, neue Zeile und horizontale Registerkarte.
Wenn Sie diese Regeln einhalten, entspricht die Abfolge von Zeichen, die Sie aus einem Textdatenstrom lesen, der Reihenfolge der von Ihnen geschriebenen Zeichen, ob als Bytes oder als Multibyte-Zeichen. Anderenfalls können die Bibliotheksfunktionen eine von Ihnen erstellte Datei entfernen, wenn die Datei beim Schließen leer ist. Sie können auch Zeichen ändern oder löschen, die Sie in die Datei schreiben.
Ein binärer Stream besteht aus einem oder mehreren Bytes willkürlicher Informationen. Sie können den in einem beliebigen Objekt gespeicherten Wert in einen (byteorientierten) binären Stream schreiben und genau lesen, was in dem Objekt beim Schreibvorgang gespeichert wurde. Die Bibliotheksfunktionen ändern nicht die Bytes, die Sie zwischen dem Programm und einem binären Datenstrom übertragen. Sie können jedoch eine beliebige Anzahl von NULL
Bytes an die Datei anfügen, die Sie mit einem binären Datenstrom schreiben. Das Programm muss mit diesen zusätzlichen NULL
Bytes am Ende des binären Datenstroms umgehen.
Die Positionierung innerhalb eines binären Datenstroms ist gut definiert, mit Ausnahme der Positionierung relativ zum Ende des Datenstroms. Sie können denselben aktuellen Dateipositionszeiger wie bei einem Textstream abrufen und ändern. Die Offsets, die von und fseek
der Anzahl von ftell
Bytes vom Anfang des Datenstroms verwendet werden (byte null), sodass ganzzahlige Arithmetik für diese Offsets vorhersehbare Ergebnisse liefert.
Ein Bytestream verarbeitet eine Datei als Bytesequenz. Im Programm ähnelt der Stream dieser Bytesequenz, ausgenommen der möglichen oben beschriebenen Änderungen.