在c++中读取返回零

Read returning zero in c++

本文关键字:返回 读取 c++      更新时间:2023-10-16

我使用write()函数将一些文本写入文件,如下所示

if (write(3,buffer,1024) > 0)
        return true;
    return false;

当我手动查看该文件时,我找到了我放入缓冲区的文本。

但是当我尝试从相同的文件中读取文本时,就像这样

if (read(3,temp,5) > 0)
           return true;
    return false;

我打印了read返回的值。

谁能解释一下问题是什么?

Thanks in advance

3是什么文件?不要像这样硬编码文字数字。使用预设的符号名称,如STDIN_FILENO, STDOUT_FILENO和STDERR_FILENO等,或从open()或create()获得的文件描述符值。

无论如何,什么工作都取决于你如何打开它们。如果你打开一个文件只是为了写,你将无法读取它,等等。如果你刚刚写了一个文件,你必须把文件指针重置到开始,然后才能读回你写的内容。

所以向我们展示更多你的代码(例如你如何打开文件),人们将能够帮助你。我猜你忘记重置文件指针了。所以尝试:

lseek(3, 0, SEEK_SET);

,然后再尝试从文件3中读取。我仍然认为文字作为文件描述符是非常可疑的。