web-dev-qa-db-ja.com

EOFテキストファイルのASCII / HEXコード

すべてのファイル、特にテキストファイルの最後にある限り、[〜#〜] eof [〜#〜]または[〜#〜] nullの16進コードがあります。 [〜#〜]文字。また、プログラムを作成してテキストファイルの内容を読み取りたい場合は、EOF hexcodeを受け取るまでread関数を送信します。

私の質問:テキストファイルの16進ビューを表示するためにいくつかのツールをダウンロードしました。しかし、[〜#〜] eof [〜#〜](End Of File/NULL)または[〜#〜] eot [〜#〜)の16進コードが表示されません](テキストの終わり)


ASCII/16進コードテーブル:

enter image description here

これは16進ビューアツールの出力です:

enter image description here


注:私の入力ファイルは、内容が「「EOF」の16進コードはどこですか?」というテキストファイルです

1
Abraham

従来、一部のコンテキストでは、ファイルの終わりの「文字」があります-MS-DOS /CMD.EXEは CTRL+Z -Linuxは CTRL+D

ASCIIテーブルのCTRL-Zはコード26、CTRL-Dはコード4です。

これらは、stdin(「C」プログラミングおよび一般的なコンソール/ tty IOで適用される意味で)を使用する状況で引き続き使用されます。

例えば.

 C:\> copy con myFile.txt 
これはファイルに入力するテキストです。EnterCTRL+Z[。

Linux'enでもまったく同じシーケンスが機能しますが、最初の違いがあります。

 $ cat> myFile 

そしてで終わる CTRL+D、次にtypeの代わりにcat myFile.txt

...ただし、プログラミングしている場合は、これらの文字の影響はほとんど見られません。
私はこの記事を書いている時点で、これらの文字で停止する関数呼び出しを認識していません。
ソフトウェア/ライブラリのドキュメントを読んでください-これらの影響についての記述がない場合は、何か奇妙なことが起こることはないでしょう。

行末(CRとLFの組み合わせ、コード13と10)は少し異なりますが、TEXTファイルをあるシステムから別のシステムに転送するとかなり面倒になる可能性があります。unix2dosdos2unixは、Linux'enで使用できるシェルコマンドです-この目的のために。

サンプルbashセッション:

 $ echo -e "最初の行\ n\x042番目の行。" 
最初の行
 2番目の行。
 
 $ echo -e "最初行\ n\x042行目。」 | od -t x1z 
 0000000 46 69 72 73 74 20 6c 69 6e 65 0a 04 53 65 636f>最初の行..Seco <
 0000020 6e 64 20 6c 69 6e 65 2e 0a> nd line .. <
 0000031 
 
 $ echo -e "First line\n\x04Secondline。" | grep line 
 1行目
 2行目。
 
 $ cat> myFile.txt 
こちらをご覧ください
 
 $ cat myFile.txt 
これをチェックしてください
 
 $ 
1
Hannu

いいえ、EOFは特殊文字ではありません、笑:)

見てください: http://www.cplusplus.com/reference/cstdio/EOF/

これは基本的にマクロです。

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().

つまり、APIはファイルの行を読み取ろうとし、-1を取得して、EOFを返します。 EOFとは対照的に、CR/LFはそのような特殊文字であり、改行がある場合はHEXエディターでそれらを確認できます。

'\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).

ファイルとは別に、メモリ内の文字配列の最後に「\ 0」文字があり、文字列の終わりを示します。それがなければ、コンピュータはその文字のグループがどれくらい続くかを知る方法がありません。文字列を印刷/コピー/何でもするとき、それはそのヌル文字を見つけるまで文字を印刷/コピーし続けます...それはそれが停止することを知っているときです。

多分これはNULLを意味しますか?

1
duDE