我制作了一个空文件并用鼠标垫打开az。
保存。
当我用十六进制编辑器打开文件时,没有空字符但是0a就在那里。
我应该把文件的结尾放在什么空字符上?
当我使用系统调用编写文件时。
是0a吗?还是0?
感谢
答案 0 :(得分:7)
Unix上的文件末尾通常没有空字符。空文本文件的字节数为零。一个空行将具有0x0A(LF,换行)字符。 Unix文本文件具有单个LF行结尾。
答案 1 :(得分:5)
文件系统记录文件中的字节数,并且所有字节都可以自由地具有任何值 - 没有特定字符/字节值是保留的sentinel值,意味着文件结束。因此,您可以在文件中的任何位置放置NUL,但不需要标记结尾。
文本文件中的每一行确实应该用换行符终止,ASCII 10 dec,0A hex(在Windows上它是一个回车符ASCII 13 dec后跟一个换行符)。如果你创建一个空文件ala echo > filename
它将有一个换行符,但只是因为echo默认打印一个空行。如果您改为使用touch filename
,那么它将完全为空。
当您cat > filename
并在终端/控制台窗口中键入内容时,最终使用Control-D触发文件结束条件(对于DOS中的Linux / Control-Z),但该字符是没有存储在文件本身。
答案 2 :(得分:2)
0a是换行符,又名control-J或\n
。在Unix中,文本文件通常不以空字符结尾。
答案 3 :(得分:-1)
这取决于谁实现了文件格式。