小编use*_*184的帖子

C 读取(从标准输入)在 0x1a 字符处停止

目前我正在为原始数据(如 jpg 等)实施 Burrows-Wheeler 变换(和逆变换)。在对文本文件等普通数据进行测试时,不会出现问题。但是在读取 jpg 文件时,例如它会在字符 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);
Run Code Online (Sandbox Code Playgroud)

c io stdin

1
推荐指数
1
解决办法
2779
查看次数

标签 统计

c ×1

io ×1

stdin ×1