EOF ASCII / HEX-Code in Textdateien

6935
Abraham

Soweit am Ende aller Dateien, insbesondere Textdateien, bekannt ist, gibt es einen Hex-Code für EOF- oder NULL- Zeichen. 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. Ich kann jedoch keinen Hex-Code für EOF (End Of File / NULL) oder EOT (End Of Text) sehen.


ASCII / Hex-Code-Tabellen:

enter image description here

Dies ist eine Ausgabe von Hex-Viewer-Tools:

enter image description here


Hinweis: Meine Eingabedatei ist eine Textdatei mit dem Inhalt "Wo ist der Hexcode von" EOF "?"

1

2 Antworten auf die Frage

1
duDE

Nein, EOF ist kein Sonderzeichen, lol :)

Schauen Sie doch mal rein: 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 einer Datei zu lesen, holt -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). 

Neben den Dateien befindet sich am Ende des Zeichen-Arrays ein '\ 0'-Zeichen, das das Ende der Zeichenfolge markiert. Ohne sie kann der Computer nicht wissen, wie lange diese Gruppe von Charakteren dauert. Wenn Sie eine Zeichenfolge drucken / kopieren / drucken, werden nur Zeichen gedruckt / kopiert, bis das Zeichen null gefunden wird. Dann kann es angehalten werden.

Vielleicht meinst du das eine NULL?

Ich habe ein Programm geschrieben, das eine Textdatei nach dem Zeichen "A" durchsucht. Wenn der Text kein "A" enthält, verschieben Sie die Datei in ein spezielles Verzeichnis. Ich möchte wissen, gibt es eine Möglichkeit, mein Programm zu betrügen? Zum Beispiel "Hinzufügen eines NULL / EOF / EOT-Hex-Codes in die Mitte meines Eingabetextes"? Ich möchte wissen, gibt es eine Möglichkeit, das Programm zu betrügen, indem nur die Textdatei geändert wird? Angenommen, sie können nichts im Host installieren oder bearbeiten (das mein Programm darin installiert hat.) Vielen Dank Abraham vor 9 Jahren 0
Wenn Sie eine `read ()` - Funktion im Binärmodus oder sogar einen Zeilenvorschubmodus verwenden - und in der Dokumentation für diese Funktion nichts anderes angegeben ist - ist meine Schlussfolgerung: nichts kann es täuschen. ** Um sich jedoch mehr mit dem IST-Fall zu befassen, müssen Sie dies mithilfe von Tools ÜBERPRÜFEN. ** - Die tatsächliche Situation hängt ganz davon ab, wie der Tool-Provider- und / oder Bibliothekscode geschrieben ist - und zwar dort Ich kann NUR raten wie jeder andere. Hannu vor 9 Jahren 0
Ja, es gibt einen Weg - Ihr Programm kann diasassembliert werden: http://en.wikibooks.org/wiki/X86_Disassembly/Objects_and_Classes duDE vor 9 Jahren 0
1
Hannu

Traditionell gibt es in manchen Kontexten ein Dateiende-Zeichen, das MS-DOS / CMD.EXE verwendet. CTRL+ Z - Linux verwendet CTRL+D

CTRL-Z ist Code 26, CTRL-D ist Code 4 in der ASCII-Tabelle.

Diese werden in Situationen verwendet, in denen Sie verwendet werden stdin(in der Bedeutung, die in der "C" -Programmierung und der allgemeinen Konsole / tty-IO verwendet wird).

z.B

C: \> kopiere meine Datei.txt Dies ist der Text, der in die Datei aufgenommen werden soll. Enter CTRL+Z C: \> Geben Sie meineDatei.txt ein Dies ist der Text, der in die Datei aufgenommen werden soll. C: \>  

Die gleiche Sequenz funktioniert in Linux'en mit dem Unterschied, dass Sie damit beginnen

$ cat> myFile 

und enden mit CTRL+ D, dann cat myFile.txtstatt type.

... Wenn Sie jedoch programmieren, werden Sie kaum Auswirkungen dieser Zeichen feststellen.
Bei diesem Schreiben ist mir kein Funktionsaufruf bekannt, der bei diesen Zeichen aufhören würde.
Lesen Sie die Dokumentation zu Ihrer Software / Bibliothek. Wenn keine Aussage über deren Auswirkungen gemacht wird, werden Sie wahrscheinlich nichts Seltsames sehen.

Zeilenenden - CR- und LF-Kombinationen, Code 13 und 10 - sind zwar etwas anders, es kann jedoch sehr unordentlich werden, wenn Sie TEXT-Dateien von einem System auf ein anderes übertragen. unix2dosund dos2unixsind Shell-Befehle, die unter Linux zur Verfügung stehen - zu diesem Zweck.

Beispiel Bash Session:

$ echo -e "Erste Zeile \ n \ x04Zeite Zeile." Erste Linie Zweite Reihe.  $ echo -e "Erste Zeile \ n \ x04Zeite Zeile." | od -t x1z 0000000 46 69 72 73 74 20 6c 69 6e 65 0a 04 53 65 63 6f> Erste Zeile..Seco < 0000020 6e 64 20 6c 69 6e 65 2e 0a> nd Zeile. < 0000031  $ echo -e "Erste Zeile \ n \ x04Zeite Zeile." | grep line Erste Linie Zweite Reihe.  $ cat> meineDatei.txt Schau dir das an  $ cat myFile.txt Schau dir das an  $  
Würdest du bitte meinen Kommentar unter der vorherigen Antwort ansehen? (unten ** Antwort **). Vielen Dank Abraham vor 9 Jahren 0