• ベストアンサー

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); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • YamaYoshi
  • ベストアンサー率29% (91/313)
回答No.1

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);

candlefire
質問者

お礼

ご回答ありがとうございます。 VC++で普通にC言語の関数が使えるのを知りませんでした。(^^;)おかげさまで解決しました。どうもありがとうございました。

その他の回答 (1)

回答No.2

arrayの宣言は、 int array[100][100]; って感じですか? WriteFileの第二引数はポインタである必要がありますが、array[i][j]は普通の値です。 その違いから、エラーが発生しています。 とりあえずエラーを発生させない為には、array[i][j]の値ではなくポインタを渡してあげてください。 >また他にも思い通りにいかない点もあるかもしれませんが・・そうしたら補足なり、別質問なりで投げてください。 ファイル出力で一番簡単なのは、#1さんがおっしゃっているfprintf()を使ってしまうことですね。

candlefire
質問者

お礼

ご回答ありがとうございます。なるほどーー、ポインタを渡せばよいわけですね。分かりました!!まだまだ、VC++ははじめたばかりなので分からない事ばかりですが、これから勉強していきたいと思います。ありがとうございました。

関連するQ&A