ファイルに書き込むときにいくつか問題があります。 このプログラムの主な目的は、exeファイルからすべてのデータを読み込み、別のexeファイルに書き込んだ後に実行することです。 問題は、新しいファイルを書き込むときに、あまりにも多くのビットを書き込むことです。たとえば、私は45568(n = 45568)バイトを読んでいますが、新しいファイルには45800バイトしかありません。理由はわかりません。Ofstream writting too many bytes
#include <fstream>
#include <iostream>
int main(int argc, char** argv)
{
using namespace std;
ifstream file;
file.open("a.exe", istream::in | ios::binary);
std::streampos fsize = 0;
fsize = file.tellg();
file.seekg(0, std::ios::end);
fsize = file.tellg() - fsize;
file.close();
int n = fsize;
file.open("a.exe", istream::in | ios::binary);
std::cout << n << " " << endl;
int z=0;
char *p = new char[n+1];
for (int i = 0;i < n;i++)
{
char ch;
file.get(ch);
p[i] = ch;
}
file.close();
ofstream g;
g.open("b.bin");
std::cout << n;
g.write(p, n);
return 0;
}
:
はまた、あなたの全体のプログラムは、に簡素化することができます。 – user4581301
は同じファイルです。私は質問を投稿したときにファイルの名前を変更するのを忘れました。 –