現在、生データ (jpg など) の Burrows-Wheeler 変換 (および逆変換) を実装しています。テキストファイルなどの通常のデータでテストする場合、問題は発生しません。しかし、jpg ファイルの読み取りに関しては、たとえば、文字 0x1a 別名代替文字で読み取りを停止します。OSに依存するコードを使用しないが結果がないソリューションをインターネットで検索してきました...バイナリモードで標準入力を読み込もうと思っていましたが、それは簡単ではないと思います。この問題を解決する簡単な方法はありますか?
コード:
buffer = (unsigned char*) calloc(block_size+1,sizeof(unsigned char));
length = fread((unsigned char*) buffer, 1, block_size, stdin);
if(length == 0){
// file is empty
}else{
b_length = length;
while(length == b_length){
buffer[block_size] = '\0';
encodeBlock(buffer,length);
length = fread((unsigned char*) buffer, 1, block_size, stdin);
}
if(length != 0){
buffer[length] = '\0';
encodeBlock(buffer,length);
}
}
free(buffer);