【问题标题】:Can we open a binary file in C without fopen?我们可以在没有 fopen 的情况下用 C 语言打开二进制文件吗?
【发布时间】:2015-03-12 12:11:32
【问题描述】:

在 C 编程中,我们可以在没有 fopen() 的情况下仅使用 open 来打开二进制文件吗? 因为我需要一个文件描述符,而不是文件流。

谢谢

【问题讨论】:

  • 在 POSIX 系统上,如 Linux 和 OSX,C 标准 I/O 函数(如 fopen 和 fread 等)最有可能使用较低级别的系统调用,如 open 和read。事实上,您可以使用fileno 函数从任何FILE 获取描述符。

标签: c binary fopen


【解决方案1】:

是的,使用

int file;
file = open("yourfile.txt", O_RDONLY | O_BINARY, 0); //change flags if necessary

使用这些包括:

#include <fcntl.h>
#include <sys/stat.h> //for the open() permission flags

file 变量用于引用文件。如果不成功,open() 返回 -1。

查看其他文件处理函数here

【讨论】:

  • 但是如果我在常规文件中添加这个标志,它会起作用吗?因为我无法确定文件是否为二进制文件
  • @RomanGrout 文本和二进制之间唯一重要的区别是行尾字符 AFAIK,所以你不必太担心。
  • 嘿!好像不行 :) " 错误:'O_BINARY' undeclared (first use in this function) "
  • @RomanGrout 没有O_BINARY 标志,因为open() 不关心行尾字符,所以O_BINARY 标志没有意义。
  • @RomanGrout:O_BINARY 是 Windows 的东西。如果你想在你的代码中支持它,你可以将#define 设置为 0,如果它没有被定义,并将它包含在open 选项中。 POSIX 保证二进制和文本模式没有区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
相关资源
最近更新 更多