目前我正在實施原始數據(如JPG等)的Burrows-Wheeler變換(和逆變換)。 當在文本文件等正常數據上進行測試時,不會出現問題。但是當閱讀jpg文件時它停止閱讀字符0x1a又名替代字符。 我一直在尋找通過互聯網的解決方案,不採取操作系統依賴代碼,但沒有結果... 我正在想在二進制模式下讀取stdin,但這不是很容易,我猜。有沒有簡單的方法來解決這個問題?C閱讀(從標準輸入)在0x1a字符停止
代碼:
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);
您能否發佈演示此問題的代碼? – simonc
代碼太長,無法發佈。基本上我使用fread()從標準輸入讀取,我正在做一個while循環。除非fread讀取了0個字節,否則這個循環會繼續讀取。 – user1745184
請勿發佈整個代碼。只是表明問題的部分。例如。刪除所有轉換代碼並生成一個簡單地從標準輸入讀取的程序。 –