バグが治った~

アバター
せんちゃ
記事: 50
登録日時: 15年前
住所: 江別市東野幌町
連絡を取る:

バグが治った~

投稿記事 by せんちゃ » 14年前

どうやら原因はメンバ変数をちゃんと初期化していなかったせいでした。

CODE:

	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 );
	}
龍神録の館のプログラムをまんま使ってますがw
eo_numは一通りのデータセットが終わったら次の配列を指定する変数ですが、

終了後もそのままeo_numの値が変わらないので
次の読み込みでも値はそのまま、
結果的に2回目の読み込みは失敗し、
3回目の読み込みで指定場所が配列要素オーバーして「ゲイツにチクるぞ!!」ウィンドウが出たのだと予測


全部初期化する関数を作って読み込み前に置いたらバグは治りました(´ω`*)


P.S
学校で行われたじゃんけんゲーム、
29人中6位になれました!! d(´∀`)b
最後に編集したユーザー せんちゃ on 2010年12月13日(月) 16:09 [ 編集 1 回目 ]

コメントはまだありません。