C语言 低级读文件


#include <fcntl.h> 
#include <stdio.h> 
#include <string.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 
int main (int argc, char* argv[]) 
{
  char* filename = argv[1]; 
  /* Open the file for writing. If it exists, append to it; 
     otherwise, create a new file.  */ 
  int fd = open (filename, O_RDONLY | O_CREAT | O_APPEND, 0666); 
// Reading file probleme
  close (fd); 
  return 0; 
} 

我的问题是,我不能真正找到如何读取缓冲区。我在文件中只有整型,但我如何从它读取到缓冲区呢?

您要查找的函数名为"read"。但是,您必须将之前已经分配的缓冲区传递给它。像这样的代码应该可以工作:

if (fd) {
  char buffer[1024];
  int n = read(fd, buffer, 1024);
  /* ... */
}

调用之后,n将包含从fd中读取的字节数(如果没有则为0,如果发生错误则小于0)。

如果文件中有原始整数,你可以像这样访问它们:

int *ibuffer = (int*)buffer;
然后,

ibuffer是一个长度为1024/sizeof(int)的整型数组,包含fd中连续的前n个/sizeof(int)整型。严格地说,这不是完全合法的C语言,但我还没有看到最近的架构,这不会工作。

你是用字符串还是字节表示整型数?如果字符串只使用缓冲区上的sscanf来读取它。对于字节表示,您可以直接从缓冲区读取原始字节。

相关内容

  • 没有找到相关文章

最新更新