0

以下のコードを使用して zip アーカイブから実行可能ファイルを抽出しようとしていますが、何らかの理由でファイルが正しくディスクに出力されません。解凍したファイルを実行しようとすると、「このアプリはお使いの PC では実行できません」というエラーが表示されます。解凍時のファイル サイズは 309 KB であるため、すべてのデータがそこにあるように見えます。コードの何が問題になっていますか? 手動で抽出すると問題なく動作します。また、.txt ファイルを抽出しようとすると、改行ごとに 1 ではなく 2 つの改行が書き込まれます。

int error = 0;
zip *z = zip_open("pathtozip.zip", 0, &error);

struct zip_stat st;
zip_stat_init(&st);
zip_stat(z, "file.exe", 0, &st);

char *contents = new char[st.size];

zip_file *f = zip_fopen(z, "file.exe", ZIP_FL_COMPRESSED);
zip_fread(f, contents, st.size);
zip_fclose(f);

if (std::ofstream("C:\\users\\admin\\desktop\\test.exe", std::ofstream::binary).write(contents, st.size))
    std::cout << "File Extracted" << std::endl;

zip_close(z);
4

1 に答える 1