在c ++中读取返回零

时间:2011-09-05 20:28:00

标签: c++ c

我已经使用write()函数将一些文本写入文件,就像这样

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

    return false;

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

但是当我尝试从同一个文件中读取文本时

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

    return false;

相反,我打印了read返回的值。它是零。

任何人都可以解释问题是什么吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

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

无论如何,一切都有效取决于你打开它们的方式。如果你打开一个文件只是为了写,你将无法从中读取,等等。如果你刚写入一个文件,你必须将它的文件指针重置为开头才能回读你的内容写。

因此,请向我们展示更多代码(例如,如何打开文件),人们将能够为您提供帮助。我猜你忘了重置文件指针。所以试试:

lseek(3, 0, SEEK_SET);
在尝试从文件3中读取之前

。我仍然认为 literal 作为文件描述符非常可疑。它当然看起来不太便携。