2016-12-03 224 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,或者更好,不要。

除此之外,它看起來基本上是正確的。

相關問題