C++でのバイナリファイルの読み取りに問題があります。現在、私のコードは次のようになっています。
FILE *s=fopen(source, "rb");
fseek(s,0,SEEK_END);
size_file size=ftell(s);
rewind(s);
char *sbuffer=(char *) malloc(sizeof(char) * size);
if(sbuffer==NULL){
fputs("Memory error", stderr);
exit(2);
}
size_t result=fread(sbuffer,1,size,s);
if(result != size){
fputs("Reading error",stderr);
exit(3);
}
fclose(s);
cout<<sbuffer<<endl;
ただし、端末に出力される文字は、PDFファイルに書き込んだ文字ではなく、すべてランダムな文字です。それらは次のようなものです:
% P D F - 1 . 3
% ? ? ? ? ? ? ? ? ? ? ?
4 0 o b j
< < / L e n g t h 5 0 R / F i l t e r / F l a t e D e c o d e > >
s t r e a m
x ? ? ? j ? 0 E ? ? ? k ? y Q E # ? ? ? m ? & ? ? @ % + ? . ? ? ? ? A i ? 4 z \ 1 G W ? ? - , ? ? ? ( ? ? ? 9 ? ? ? ? ? \ ? } ? ? ? e ? ? ? ? 0 ? ? ? ~ ? , ? ? & 8 ? ? x e 4 ? r
| ? ? ?
? ? ? ? E > a ? ? z & ? Z ? < ? } ' ? ? ? j p ? ? Q 7 0 ? ? ? S % - p ? ? ? 7 D ? ? ? ' Q z Q ? ? ? ? ? ? ? ? ? ? \ 2 ? ? 7 ? ? ? < ? ? D ~ ? ? ?
e n d s t r e a m
e n d o b j
5 0 o b j
2 2 8
e n d o b j
2 0 o b j
そして、上記のような他の多くのキャラクター。長い間検索してみましたが、実際の文字を取り出して後処理する方法がわかりません。ちなみに、バイナリファイルを入出力とするコンプレッサーを書こうとしています。ここでの助けは大歓迎です!