目前我正在实施原始数据(如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
请勿发布整个代码。只是表明问题的部分。例如。删除所有转换代码并生成一个简单地从标准输入读取的程序。 –