gpt4 book ai didi

C - read() 是否添加 '\0' ?

转载 作者:行者123 更新时间:2023-11-30 18:16:27 25 4
gpt4 key购买 nike

有必要吗?我一直对这类事情很模糊,但如果我有类似的东西:

char buf[256];
read(fd, buf, 256);

write(fd2, buf, 256);

除了这些函数返回 -1 的情况之外,这里是否存在潜在的错误?

如果只读取40个字符,会在后面加上\0吗? (并且会写识别\0 并停止?另外,如果要读取256个字符,那256个字符后面是否有\0?

最佳答案

does read() add a '\0'?

不,事实并非如此。它只是读取。

来自read()'s documentation :

The read() function shall attempt to read nbyte bytes from the file associated with the open file descriptor, fildes, into the buffer pointed to by buf.

<小时/>

Is there potential for error here, other than the cases where those functions return -1?

read() 可能会返回 0 表示文件结束。

如果读取(也从套接字描述符)read() 不一定读取与指定的一样多的字节。因此,在这种情况下,不仅要测试 -1 的读取结果,还要将其与函数被告知读取的字节数进行比较。

<小时/>

一般说明:

函数执行已记录的操作(至少对于 C 语言的正确实现而言)。您的两个假设(自动设置 0 终止,检测后者)都没有记录。

关于C - read() 是否添加 '\0' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com