0

バッファサイズを明示的に宣言した場合にのみ、ファイルをメモリに読み込むように見えます。これは機能します

#include <stdio.h>
int main(){
  FILE *fp = fopen("test.log", "rb");
  char buffer[37];
  fread(buffer, 1, 36, fp);
  printf("%s", buffer);
}

これにより、ジャンクが出力に追加されます

#include <stdio.h>
int main(){
  FILE *fp = fopen("test.log", "rb");
  fseek(fp, 0, SEEK_END);
  long siz = ftell(fp);
  rewind(fp);
  char buffer[siz + 1];
  fread(buffer, 1, siz, fp);
  printf("%s", buffer);
}
4

2 に答える 2

7

buffer[siz]='\0';前に挿入printf("%s", buffer);

于 2012-08-04T17:49:16.530 に答える
0

別のアプローチを試してください - 「メモリマップ」を使用してください。それが行うことは、あたかもメモリ ブロックであるかのようにファイルにアクセスできるようにすることです。これにより、コードを簡素化すると同時にパフォーマンスを大幅に向上させることができます。

詳細については、http://en.wikipedia.org/wiki/Mmapをご覧ください。

于 2012-08-04T17:52:13.080 に答える