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

} 

私の問題は、バッファに読み込む方法が本当に見つからないことです。ファイルに int しかありませんが、ファイルからそのバッファーに読み取るにはどうすればよいですか? それを達成するための機能が見つかりません。

4

2 に答える 2

1

あなたが探している機能は「読み取り」と呼ばれます。ただし、以前に割り当てたバッファを渡す必要があります。このようなものはうまくいくはずです:

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

  /* ... */
}

その呼び出しの後、n には fd から読み取られたバイト数が含まれます (エラーが発生した場合は 0 または 0 未満)。

そのファイルに生の int がある場合は、次のようにアクセスできます。

int *ibuffer = (int*)buffer;

ibuffer は、長さ 1024/sizeof(int) の int の配列であり、fd 内の最初の n/sizeof(int) 個の連続する int を含みます。厳密に言えば、これは完全に正当な C ではありませんが、これが機能しないアーキテクチャを最近見たことがありません。

于 2013-01-15T18:12:35.560 に答える
0

文字列またはバイトとして表現された int はありますか? sscanf文字列をバッファで使用して読み取るだけの場合。バイト表現の場合、バッファから生のバイトを読み取ることができます。

于 2013-01-15T18:06:27.943 に答える