-4
#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; 

} 

我的问题是我真的找不到如何读取缓冲区。我在文件中只有整数,但我怎样才能从它读取到该缓冲区?我找不到实现这一目标的功能。

4

2 回答 2

1

您正在寻找的功能称为“读取”。但是,您必须将之前已经分配的缓冲区传递给它。像这样的东西应该起作用:

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

  /* ... */
}

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

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

int *ibuffer = (int*)buffer;

ibuffer is then an array of ints of length 1024/sizeof(int) containing the first n/sizeof(int) consecutive ints in fd. Strictly speaking this isn't quite legal C, but then I haven't seen an architecture lately where this wouldn't have worked.

于 2013-01-15T18:12:35.560 回答
0

您是否将整数表示为字符串或字节?如果字符串只是sscanf在您的缓冲区上使用来读取它。对于字节表示,您可以从缓冲区中读取原始字节。

于 2013-01-15T18:06:27.943 回答