2016-10-17 9 views
0

ファイルIOに問題があります。私はいくつかの標準的なファイルポインタのものを使用していますが、私はこのエラーが続いています:ChemicalWar.exeの0x58CBC465(msvcr120_app.dll)の未処理例外:無効なパラメータが無効なパラメータを致命的と見なす関数に渡されました。バイナリデータをWindowsストアアプリケーションのファイルに書き込む方法C++を使用して

私が集めたことから、私はそれがデフォルトの場所に書き込む許可を持っていないことと関係があると思いますが、場所を変更する方法がわかりません。ここ

は私に迷惑を与えている私は、これまでに書いたコードです:

FILE* ofile; 
NametoBinary(_filename); 
fopen_s(&ofile, (char*)folder->ToString(), "wb"); 
fwrite(&animhead, sizeof(Afhead), 1, ofile); 
fwrite(binbuff.data(), sizeof(unsigned char), binbuff.size(), ofile); 
fclose(ofile); 

それは最初fwriteの呼び出しで中断します。どんな助けも素晴らしいだろう。前もって感謝します。

+0

'_filename'はどこに使用されていますか?また、先頭のアンダースコアの付いた識別子は通常コンパイラ用に予約されているため、競合を避けるためには使用しないでください。 –

+0

'folder'変数のタイプは何ですか?変数のCスタイルのバージョンを返す関数を選ぶこともできます。おそらく 'folder-> ToString()。c_str()'のようなものです。 –

+0

また、ファイル操作の戻り状況を確認してください。堅牢なコーディングを開始するのに適しています。 –

答えて

0

だから誰かが知っておく必要がある場合に私はそれを投稿するので、私は解決策を考え出した。

FILE* ofile = nullptr; 
NametoBinary(_filename); 
auto folder = Windows::Storage::ApplicationData::Current->RoamingFolder; 
std::wstring ws(folder->Path->Data()); 
std::string full(ws.begin(), ws.end()); 
full += "\\"; 
full += _filename; 
fopen_s(&ofile, full.c_str(), "wb"); 
if (nullptr == ofile) return false; 
fwrite(&animhead, sizeof(Afhead), 1, ofile); 

新しいWindowsアプリには、独自のFileI0システムがあります。このソリューションは、appdataフォルダ内のフォルダにファイルを保存します。

関連する問題