4

在linux中,文件末尾没有空字符是否正常?

我创建了一个空文件并用鼠标垫打开了写 az。

保存。

当我用十六进制编辑器打开文件时,没有空字符,但有 0a。

我应该在文件末尾放什么空字符?

当我用系统调用编写文件时。

是0a吗?还是0?

谢谢

4

4 回答 4

7

Unix 上的文件末尾通常没有空字符。空文本文件的字节数为零。一个空行将有一个 0x0A(LF,换行)字符。Unix 文本文件有单个 LF 行结尾。

于 2011-03-28T01:10:47.197 回答
5

文件系统记录文件中的字节数,并且所有字节都可以自由具有任何值 - 没有特定的字符/字节值是保留的标记值,表示文件结束。所以,你可以在文件的任何地方都有一个 NUL,但不需要一个来标记结尾。

文本文件中的每一行确实应该以换行符结束,ASCII 10 dec,0A hex(在 Windows 上是回车 ASCII 13 dec 后跟换行符)。如果您创建一个空文件 alaecho > filename它将有一个换行符,但这只是因为 echo 默认打印一个空行。如果您改为使用touch filename它,它将完全是空的。

当您cat > filename在终端/控制台窗口中输入内容时,您最终会使用 Control-D 触发文件结束条件(对于 Linux / DOS 中的 Control-Z),但该字符不会存储在文件本身中。

于 2011-03-28T01:18:19.797 回答
2

0a 是换行符,又名 control-J 或\n. 在 Unix 中,文本文件通常不以空字符结尾。

于 2011-03-28T01:12:29.083 回答
-1

这取决于谁实现了文件格式。

于 2011-03-28T01:07:36.903 回答