![EOF ASCII/HEX-Code in Textdateien](https://rvso.com/image/1417121/EOF%20ASCII%2FHEX-Code%20in%20Textdateien.png)
Soweit bekannt, steht am Ende aller Dateien, insbesondere Textdateien, ein Hex-Code fürEnde der LaufzeitoderNULLZeichen. Und wenn wir ein Programm schreiben und den Inhalt einer Textdatei lesen möchten, senden wir die Lesefunktion, bis wir diesen EOF-Hexcode erhalten.
Meine Frage: Ich habe einige Tools heruntergeladen, um eine Hex-Ansicht einer Textdatei anzuzeigen. Aber ich kann keinen Hex-Code für sehenEnde der Laufzeit(Dateiende/NULL) oderEnde der OT(Ende des Textes)
ASCII/Hex-Codetabellen:
Dies ist die Ausgabe des Hex-Viewer-Tools:
Hinweis: Meine Eingabedatei ist eine Textdatei mit dem Inhalt „Wo ist der Hex-Code von „EOF“?“
Antwort1
Traditionell gibt es in einigen Kontexten ein Dateiendezeichen - MS-DOS / CMD.EXE verwendet CTRL+ Z - Linux verwendet CTRL+D
STRG-Z ist Code 26, STRG-D ist Code 4 in der ASCII-Tabelle.
Diese werden weiterhin in Situationen verwendet, in denen Sie verwenden stdin
(in der Bedeutung, wie sie in der „C“-Programmierung und bei allgemeiner Konsolen-/TTY-E/A angewendet wird).
z.B
C:\> kopiere mit meineDatei.txt Dies ist der Text, der in die Datei eingefügt werden soll. Enter CTRL+Z C:\> geben Sie myFile.txt ein Dies ist der Text, der in die Datei eingefügt werden soll. C:\>
Die gleiche Sequenz funktioniert auch unter Linux, mit dem Unterschied, dass Sie mit
$ cat >meineDatei
und enden mit CTRL+ D, dann cat myFile.txt
statt type
.
... Wenn Sie jedoch programmieren, werden Sie die Auswirkungen dieser Zeichen kaum bemerken.
Mir ist zum Zeitpunkt des Schreibens kein Funktionsaufruf bekannt, der bei diesen Zeichen anhalten würde.
Lesen Sie die Dokumentation Ihrer Software/Bibliothek – wenn dort keine Angaben zu den Auswirkungen dieser Zeichen enthalten sind, werden Sie wahrscheinlich nichts Ungewöhnliches bemerken.
Zeilenenden – CR- und LF-Kombinationen, Code 13 und 10 – sind jedoch etwas anders, es kann ziemlich chaotisch werden, wenn Sie TEXT-Dateien von einem System auf ein anderes übertragen.
unix2dos
Außerdem dos2unix
sind unter Linux Shell-Befehle für diesen Zweck verfügbar.
Beispiel einer Bash-Sitzung:
$ echo -e "Erste Zeile\n\x04Zweite Zeile." Erste Linie Zweite Reihe. $ echo -e "Erste Zeile\n\x04Zweite Zeile." | od -t x1z 0000000 46 69 72 73 74 20 6c 69 6e 65 0a 04 53 65 63 6f >Erste Zeile..Zweite< 0000020 6e 64 20 6c 69 6e 65 2e 0a >. Zeile..< 0000031 $ echo -e "Erste Zeile\n\x04Zweite Zeile." | grep line Erste Linie Zweite Reihe. $ cat >meineDatei.txt Sieh dir das an $ cat meineDatei.txt Sieh dir das an $
Antwort2
Nein, EOF ist kein Sonderzeichen, lol :)
Schau mal:http://www.cplusplus.com/reference/cstdio/EOF/
Es ist im Grunde ein Makro:
End-of-File
It is a macro definition of type int that expands into a negative integral constant expression (generally, -1).
It is used as the value returned by several functions in header <cstdio> to indicate that the End-of-File has been reached or to signal some other failure conditions.
It is also used as the value to represent an invalid character.
In C++, this macro corresponds to the value of char_traits<char>::eof().
Das heißt, die API versucht, eine Zeile der Datei zu lesen, erhält -1 und gibt EOF zurück. Im Gegensatz zu EOF sind CR/LF solche Sonderzeichen, die Sie im HEX-Editor sehen können, wenn Sie Zeilenumbrüche haben:
'\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF).
'\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).
Abgesehen von den Dateien gibt es am Ende des Zeichenarrays im Speicher ein '\0'-Zeichen, das das Ende der Zeichenfolge markiert. Ohne dieses Zeichen kann der Computer nicht wissen, wie lang diese Zeichenfolge ist. Wenn Sie eine Zeichenfolge drucken/kopieren/was auch immer, druckt/kopiert er einfach weiter Zeichen, bis er dieses Nullzeichen findet... dann weiß er, dass er aufhören muss.
Vielleicht meinst du dieses eine NULL?