バイナリデータをファイルに書き込もうとしていますが、セグメンテーションフォルトが発生します。私はsqliteブロブからバイナリデータを取得します。 私はこのコードで助けが必要です。 書き込みコマンドでエラーが発生します。 sqliteのコールバック:C++ fstream.writeセグメンテーションフォールト
static int callback(void* object, int, char** data, char**)
{
if (fromdb* const art= static_cast<fromdb*>(object))
{
art->title = *data[1];
art->creator = *data[2];
art->bin = data[3];
art->year = *data[4];
}
return 0;
}
書き込み機能:
void write() {
// << bin;
ofstream towrite;
string name;
cout << "Podaj nazwe pliku do zapisu";
cin >> name;
towrite.open(name, ios::out | ios::binary);
towrite.write(bin, sizeof(bin));
towrite.close();
}
あなたは多くのポインタを持っています - 彼らは何を指していますか?セグメンテーションフォルトの一般的な理由は、どこにも指していないということです(初期化されていません) –
コールバック関数の入力を理解しようとしていましたが、何も理解できませんでした。 – ssovukluk
try art-> bin = * data [3]; ? – ssovukluk