EOF ASCII/HEX-Code in Textdateien

EOF ASCII/HEX-Code in Textdateien

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:

Bildbeschreibung hier eingeben

Dies ist die Ausgabe des Hex-Viewer-Tools:

Bildbeschreibung hier eingeben


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.txtstatt 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. unix2dosAußerdem dos2unixsind 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?

verwandte Informationen