2016-12-03 120 views
-2
void jpgToBuff(const char* srcfilename) 
{ 

    FILE* file = fopen(srcfilename, "rb"); 
    fseek(file, 0, SEEK_END); 
    unsigned long fileLen = ftell(file); 
    fseek(file, 0, SEEK_SET); 
    char* file_data; 
    file_data = (char *)malloc((fileLen + 1) * sizeof(char)); 
    fread(file_data, fileLen, 1, file); 
    fclose(file); 
} 

我是否正确地做到了这一点。我想最终通过套接字发送这些信息,并在另一端对其进行解码。任何建议将是超级有用的。这是理论上可以通过套接字发送它并将其解码成另一侧的图像吗?将二进制jpg数据复制到缓冲区

+0

解释你看到的问题将有助于获得更好的答案 – bashrc

+0

改变你的标题,这很容易混淆 – eyllanesc

+0

你不需要+1的二进制数据,但否则它应该读取文件到缓冲区。很难说出你在这里寻找什么样的答案。 –

回答

0

那么,你没有做足够的错误检查。 fopen,fseek,ftell,malloc,fread和fclose都可能失败。失败可能会导致崩溃或其他意想不到的结果。

fread可能会返回比您尝试阅读的字符少的字符,所以您应该也可以检查。

你已经分配了+1字节,大概是这样你可以添加一个终止'\ 0'?但是你没有初始化最后一个字节。一个jpeg文件可以合理地包含一个嵌入的'\ 0',所以添加一个终止'\ 0'可能不会让你得到你期望的结果。

最后,sizeof(char)由标准定义为1,总是。所以,你也可以乘以1,或者更好,不要。

除此之外,它看起来基本上是正确的。

相关问题