
C言語(C++含む)とDXライブラリを用いてゲームプログラミングを行っています。初心者です。
今回、3次元配列をファイルとして出力したい。と下のようなプログラムを組んでみました。
しかし、上手くいきません。具体的に言うなら、配列の中身が最初の4つは訳の分からないものになり、残りは0で埋め尽くされてしまいます。
私としては、0か2、で埋め尽くされて欲しいのですが上手くいきません。
バイナリエディタで中身を覗いてみると、#include "Dxlib.h"なんて書いてある行があります。
これはおそらく、fwriteの使い方を間違っているんじゃないだろうか。なんて思って色々やってみたのですが、上手くいかないようです。
ここが間違っているのかそうでないのか、が未だにはっきりと分からないため、行き詰ってしまった感じがあります。
下のプログラムで間違っている箇所がありましたら、どこがどう間違っているのかと指摘して貰えると助かります。よろしくお願いします。
#include "Dxlib.h"
int save_map(){
int map_yama_1[50][50][10]={0};
int map_yama_f1[50][50][10]={0};
/***** ランダムマップ生成 *****/
static int map_sakusei = 0; //ランダムマップを生成し終えているか、否か
if ( map_sakusei ==0 ){
for (int a=0;a<50;a++){
for (int b=0;b<50;b++){
for (int c=0;c<10;c++){
map_yama_1[a][b][c] = GetRand(2);
if (map_yama_1[a][b][c] == 1)
map_yama_1[a][b][c] = 2;
}
}
}
FILE *fp = fopen("map_01.dat","wb");
if( fp == NULL ){ // NULLが返ってきたらエラー発生
return 0;
}
fwrite( map_yama_1, sizeof(map_yama_1), 1, fp );
//fwrite( map_yama_1, sizeof(int), 50*50*10, fp );
fclose(fp);
}
/***** map_yama_1作成終了 *****/
return 0;
}
No.2ベストアンサー
- 回答日時:
すくなくとも、提示された部分に大きな間違いは無さそうだし、実際実行してバイナリエディタで見ても 00 と 02 だけで意味のある文字列などは出てきません。
これに
int main() {
save_map() ;
return 0;
}
を付けただけのテスト用プログラムを実行したらどうなりますか?
あ、そうやってテストすればいいんですね。何故思いつかなかったのか・・・。
確かにこちらでも0と2のみのきちんとしたファイルが作成されました。どうやら別の場所が悪さをしているようです。
他の箇所のチェックをしてみたいと思います。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報