Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将二进制jpg数据复制到缓冲区_C++ - Fatal编程技术网

C++ 将二进制jpg数据复制到缓冲区

C++ 将二进制jpg数据复制到缓冲区,c++,C++,我做得对吗。我希望最终通过一个套接字发送这些信息,并在另一端对其进行解码。任何建议都会非常有用。从理论上讲,是否可以通过套接字将其发送并解码为另一侧的图像?嗯,您没有进行足够的错误检查。fopen、fseek、ftell、malloc、fread和fclose都可能失败。故障可能会导致崩溃或其他意外结果 fread可能返回的字符数少于您试图读取的字符数,因此您可能也应该对此进行检查 您已经分配了+1字节,大概是为了添加一个终止的“\0”?但是你没有初始化最后一个字节。jpeg文件可能合理地包含嵌

我做得对吗。我希望最终通过一个套接字发送这些信息,并在另一端对其进行解码。任何建议都会非常有用。从理论上讲,是否可以通过套接字将其发送并解码为另一侧的图像?

嗯,您没有进行足够的错误检查。fopen、fseek、ftell、malloc、fread和fclose都可能失败。故障可能会导致崩溃或其他意外结果

fread可能返回的字符数少于您试图读取的字符数,因此您可能也应该对此进行检查

您已经分配了+1字节,大概是为了添加一个终止的“\0”?但是你没有初始化最后一个字节。jpeg文件可能合理地包含嵌入的“\0”,因此添加终止的“\0”可能不会得到您希望的结果

最后,标准将sizeof(char)定义为1,始终为。所以,你最好乘以1,或者更好,不要


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

解释您所看到的问题将有助于获得更好的答案更改您的标题,这令人困惑您不需要+1表示二进制数据,但否则它应该将文件读入缓冲区。很难说你在这里寻找什么答案。我不认为人们用C++来使用<代码> MalCube()。我认为他们也使用了
unique\u ptr
。和<>代码>()(代码)>将告诉你在一个函数调用中文件的长度。这段C代码是你不应该尝试使用C++的完美例子。在C++中,您将使用<代码> STD::String < /C>,<代码> STD::IFStry和<代码> STD::vector < /代码>。
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);
}