c++ - 在 C++ 中读取返回零

标签 c++ c

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

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

    return false;

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

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

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

    return false;

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

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

提前致谢

最佳答案

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

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

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

lseek(3, 0, SEEK_SET);

在您尝试读取文件 3 之前。我仍然认为 literal 作为文件描述符非常可疑。它当然看起来不太便携。

关于c++ - 在 C++ 中读取返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312480/

相关文章:

c++ - 如何在 C++ 代码中使用 SVM Light? (可能不从 C++ 代码调用可执行文件)

c++ - 临时函数调用 : UB?

c++ - 为什么在初始化此类时不调用列表初始化?

c - 函数中返回静态数组时出现段错误

c - 返回哪个数字出现次数最多

c - Case 5 在这个 Switch 语句中是如何执行的?

检查子进程是否在 Unix 上的 C 中终止而没有阻塞

C++ 多个枚举元素作为参数传递?

c++ - c++ 标准中 [dcl.constexpr]p5 的基本原理

java - 保持循环直到输入在 java 中可用