2016-12-03 5 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倍、あるいはそれ以上には乗算しないかもしれません。

それ以外は基本的に正しいと思われます。

関連する問題