在c++中读取返回零
Read returning zero in c++
我使用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
中读取。我仍然认为文字作为文件描述符是非常可疑的。
相关文章:
- 从 cin 读取不会返回整个输入字符串
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 读取文件在第二次调用时返回INVALID_HANDLE
- 如何读取指针的值,因为这个指针是函数的返回?
- 如果语句错误地读取字符串,则始终在第一个条件返回
- 无法从文件中读取 - ferror() 返回 1
- 串行读取()不会在没有数据接收的情况下返回值
- Java 套接字读取在第二次读取时返回奇怪字符
- 我想读取文本文件中的所有内容(但文本文件中只有一个双精度值),转换为双精度值并返回值
- 无法从串行端口读取.WaitCommEvent() 永远不会返回
- cudaMemcpy 在从设备读取到主机时返回 cudaErrorInvalidArgument,不清楚原因
- 尝试以随机字符(长读取)打印字符串返回结果
- CreateFile 在尝试打开目录进行读取时始终返回错误 5(访问被拒绝)
- 在C 中读取二进制文件会返回意外值
- 函数读取最大和min int值,并用文本字符串返回
- InternetReadFile 填充缓冲区,但返回零字节读取
- 为什么我的布尔函数返回 true 会导致读取访问冲突?
- C++ cin 将字符串读取到 int 类型中返回 0
- 将注册表项读取为字符串返回数值
- C 如何将数据文件读取到结构或向量以及返回结构或向量