freadを使用した構造体に乱数を発生させ
タイトルの通りなのですが
一度.binファイルに構造体(date)を読み書きさせ、その構造体で乱数を発生させランダムにキャラを指定の部分に表示させるプログラムなのですが、どうしても配列として扱えないのか乱数部分に(teki)を入れてもエラーになったりしてしまいます。
このプログラムで乱数→配列に代入→配列の[0][1]の取り出し→表示
は可能でしょうか。
すべて書けなかったので一部抜いています
typedef struct{
char name[10];
int life;
int MP;
int att;
int defe;
}TEKI;
TEKI date[20]={
{"ソリッド ",100,100, 90, 80},
{"リキッド ",100,100, 70, 80},
(略)
{"マンティス ",100, 80, 70, 70},
{"ビッグ.ボス",100,100, 90, 90},
},*OFF,*DEF,MC[2],teki;
srand((unsigned)time(NULL));
/*-------書き込み-------*/
//テキスト
fp_txt=fopen("monster.txt","w");
if(fp_txt==NULL){return -1;}
for(i=0;i<20;i++){ fprintf(fp_txt,"%s %3d %3d %3d %3d\n",date[i].name,date[i].life,date[i].MP,date[i].att,date[i].defe); }
//バイナリ
fp_bin=fopen("monster.bin","wb");
if(fp_bin==NULL){return -1;}
fwrite(&date,sizeof(date),1,fp_bin);
fclose(fp_txt);
fclose(fp_bin);
/*----------------------*/
fp_bin=fopen("monster.bin","rb");
if(fp_bin==NULL){ return -1; }
fread(&teki,sizeof(TEKI),21,fp_bin);
/*--------乱数発生------*/
for(i=0;i<20;i++) rand_hai[i]=i;
for(i=20;i>1;i--){
rnd=rand()%i;
wk=rand_hai[i-1];
rand_hai[i-1]=rand_hai[rnd];
rand_hai[rnd]=wk;
}
sen=rand_hai[0];
kou=rand_hai[1];
MC[0]=date[sen];
MC[1]=date[kou];
/*----------------------*/
ban^=0x00000001;
OFF=&MC[ban];
DEF=&MC[ban^0x00000001];
pos.X=50;
pos.Y=5;
SetConsoleCursorPosition(hStdout, pos);
printf("[%s]",teki.name);
pos.X=16;
pos.Y=13;
SetConsoleCursorPosition(hStdout, pos);
printf("[%s]",teki.name);
_getch();
fclose(fp_txt);
fclose(fp_bin);