38 c++ java hex-editors text-files
至于所有文件的末尾,特别是文本文件,有一个EOF或NULL字符的十六进制代码.当我们想要编写程序并读取文本文件的内容时,我们发送读取函数,直到我们收到该EOF十六进制代码.
我的问题:我下载了一些工具来查看文本文件的十六进制视图.但我看不到任何EOF(文件结束/ NULL)或EOT(文本结束)的十六进制代码
ASCII/Hex代码表:

这是Hex查看器工具的输出:

注意:我的输入文件是一个文本文件,其内容是"EOF"的十六进制代码在哪里?"
感谢您的时间和考虑.
小智 37
没有EOF角色这样的东西.操作系统确切地知道文件包含多少字节(这与其他元数据一起存储,如权限,创建日期和名称),因此可以告诉尝试读取十字节文件的第十一个字节的程序:你已经到达文件末尾,没有更多的字节要读取.
事实上,例如C函数返回的"EOF"值getchar显然是一个字节范围之外的int值,因此它不可能存储在文件中!
有时,某些文件格式坚持添加NUL终止符(可能因为字符串通常存储在C中),尽管通常这些格式在单个文件中划分多个记录,而不是整个文件.而这样的装饰通常会使文件被视为"文本文件".
像ETX和NUL这样的ASCII码可以追溯到电传打字机和朋友的日子.NUL在C中用于内存中的字符串,但这与文件系统无关.
Old*_*eon 17
很久很久以前 - 文件结束标记,但多年来一直没有在文件中使用过.
您可以使用以下命令在Windows上演示它的远程回声:
C:\>copy con junk.txt
Hello
Hello again
- Press <Ctrl> and <z>
C:\>dump junk.txt
junk.txt:
00000000 4865 6c6c 6f0d 0a48 656c 6c6f 2061 6761 Hello..Hello aga
00000010 696e 0d0a in..
C:\>
Run Code Online (Sandbox Code Playgroud)
注意使用Ctrl-ZEOT标记.
但是,请注意,Ctrl-Z文件中不再显示 - 它过去只显示为0x1a某些操作系统,但不是一致的.
即使在昏暗和遥远的时间之前,ETX(0x03)的使用也已停止.
至今,unix tty 终端仍使用字节 ( ) 来指示输入结束EOT。0x04您可以使用Ctrl+ D(即^D)键入它来结束对 shell 或从 stdin 读取的任何其他程序的输入。
然而,正如其他人指出的那样,这与 EOF 不同,EOF 是一个条件,而不是一条数据本身。