- ベストアンサー
Visual C++で
VisualC++を使って、ファイルにint型の二次元配列を書き込みたいのですが、WriteFile関数を使えばよいのかな?というところまではわかったのですが、二番目の引数を"int"型から"LPCVOID"型に変形できませんと言われてしまいます。 雰囲気的には下のような感じになるのかなぁー、と思いましたが、わかりません。教えてください。お願いします。 fp = CreateFile("test.dat", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); for(i = 0; i < 100; i++){ for(j = 0; j < 100; j++){ WriteFile(fp, array[i][j], sizeof(array), &dwRote, NULL); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C言語標準じゃだめなの? FILE *fp; fp = fopen("test.dat", "w"); for(int i = 0; i < 100; i++) { for(int j = 0; j < 100; j++) { fprintf(fp, "%d", array[i][j]); } } fclose(fp);
その他の回答 (1)
- Chronos198
- ベストアンサー率30% (105/349)
arrayの宣言は、 int array[100][100]; って感じですか? WriteFileの第二引数はポインタである必要がありますが、array[i][j]は普通の値です。 その違いから、エラーが発生しています。 とりあえずエラーを発生させない為には、array[i][j]の値ではなくポインタを渡してあげてください。 >また他にも思い通りにいかない点もあるかもしれませんが・・そうしたら補足なり、別質問なりで投げてください。 ファイル出力で一番簡単なのは、#1さんがおっしゃっているfprintf()を使ってしまうことですね。
お礼
ご回答ありがとうございます。なるほどーー、ポインタを渡せばよいわけですね。分かりました!!まだまだ、VC++ははじめたばかりなので分からない事ばかりですが、これから勉強していきたいと思います。ありがとうございました。
お礼
ご回答ありがとうございます。 VC++で普通にC言語の関数が使えるのを知りませんでした。(^^;)おかげさまで解決しました。どうもありがとうございました。