读取系统调用和空终止字符

AAA*_*AAA 2 c system-calls

read()如果我使用系统调用从具有特定文件描述符的文件中读取内容buffer,是否会在?read()中添加一个空终止字符?buffer或者我是否需要在文件中隐式包含空终止字符,以便将其添加到buffer

Jos*_*hua 5

当然不。read()处理可以包含空字符的二进制文件。

一般来说,在处理文本时我们只是假设其中没有任何空字符;但有些程序实际上会处理它们。和 都read()可以getc()很好地处理空值。是字符串库对它们不满意或缺乏它们。

所以,不,不要将read()缓冲区传递给strlen(). 您需要自己跟踪这一点。其他基本str*函数通常具有mem*在传递参数长度时执行相同操作的函数。特别是,我们有memcpy(), memmem(), memchr(). 没有memcat(),但合成是微不足道的。