void Load_csv_file( char file_name[] , enemy_order e[ENEMY_ORDER_MAX] ){
fp = FileRead_open( file_name );
if( fp == NULL ){ printfDx( "読み込み失敗" ); return; }
while( 1 ){
//ここでテキストの文字を取得する
for( int i = 0 ; i < 64 ; i++ ){
//1文字ずつ読み込む、charのバッファに入れる
cBuf[i] = iBuf[i] = FileRead_getc( fp );
//'/'マークがあれば改行までループ、その後iをリセットして再ループ
if( cBuf[i] == '/' ){ while( FileRead_getc(fp) != '\n' ); i = -1; continue; }
//','があるか文末であった場合、そこまでを文字列にする
if( iBuf[i] == ',' || iBuf[i] == '\n' ){ cBuf[i] = '\0'; break; }
//EOF(文の終了)が発見されたらFileRead_closeまでジャンプ
if( iBuf[i] == EOF ){ goto FILE_READ_END; }
}
switch( LoadVal ){
case 0 : e[eo_num].cnt = atoi( cBuf ); break;
case 1 : e[eo_num].pattern = atoi( cBuf ); break;
case 2 : e[eo_num].knd = atoi( cBuf ); break;
case 3 : e[eo_num].x = atof( cBuf ); break;
case 4 : e[eo_num].y = atof( cBuf ); break;
case 5 : e[eo_num].sp = atof( cBuf ); break;
case 6 : e[eo_num].bltime = atoi( cBuf ); break;
case 7 : e[eo_num].blknd = atoi( cBuf ); break;
case 8 : e[eo_num].col = atoi( cBuf ); break;
case 9 : e[eo_num].hp = atoi( cBuf ); break;
case 10 : e[eo_num].blknd2 = atoi( cBuf ); break;
case 11 : e[eo_num].wait = atoi( cBuf ); break;
case 12 : e[eo_num].item_n[0] = atoi( cBuf ); break;
case 13 : e[eo_num].item_n[1] = atoi( cBuf ); break;
case 14 : e[eo_num].item_n[2] = atoi( cBuf ); break;
case 15 : e[eo_num].item_n[3] = atoi( cBuf ); break;
case 16 : e[eo_num].item_n[4] = atoi( cBuf ); break;
case 17 : e[eo_num].item_n[5] = atoi( cBuf ); break;
}
LoadVal++;
if( LoadVal == 18 ){
LoadVal = 0;
eo_num++;
}
}
FILE_READ_END:
FileRead_close( fp );
}
eo_numは一通りのデータセットが終わったら次の配列を指定する変数ですが、
終了後もそのままeo_numの値が変わらないので
次の読み込みでも値はそのまま、
結果的に2回目の読み込みは失敗し、
3回目の読み込みで指定場所が配列要素オーバーして「ゲイツにチクるぞ!!」ウィンドウが出たのだと予測
全部初期化する関数を作って読み込み前に置いたらバグは治りました(´ω`*)
P.S
学校で行われたじゃんけんゲーム、
29人中6位になれました!! d(´∀`)b