DXライブラリでのファイル読み込みについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
さぼまる

DXライブラリでのファイル読み込みについて

#1

投稿記事 by さぼまる » 12年前

始めまして、いつも参考にさせていただいております。
今自分はシューティングゲームを作ろうとしていて、こちらのサイトのソースを参考に(というかほぼコピーして)させていただいているのですが、
ファイルの読み込みがうまくいきません。
コンパイルは通るのですが、デバッグ実行するとアクセス違反が起きてしまいます。

コード:

#include "GV.h"
#include "enemy.h"

void enemy_load(int stage){

	char no_use[256];
	char inputc[256];
	int input[256];
	int filehandle;
	int num = 0,n = 0;
	
	switch(stage){
	case 1:
		if(filehandle = FileRead_open("data/enemy_1.csv") == 0){
			DrawFormatString(0,0,0xFFFFFF,"error");
			WaitKey();
			return ;
		}
		break;
	case 2:
		if(filehandle = FileRead_open("data/enemy_2.csv",false) == 0){
			DrawFormatString(0,0,0xFFFFFF,"error");
			WaitKey();
		}
		break;

	default:
		break;
	}
    
	FileRead_gets(no_use,256,filehandle);  //一行読み飛ばし
	DrawFormatString(10,10,0xFFFFFF,"%s",no_use);
	WaitKey();
	
	while(true){
		for(int i = 0;i < ENEMY;i++){
			inputc[i] = input[i] = FileRead_getc(filehandle); //一文字取得
			if(inputc[i] == '/'){
				while(FileRead_getc(filehandle) != '\0');
				i = -1;
				continue;
			}
			if(input[i] == ',' || input[i] == '\n'){
				inputc[i] = '\0';
				break;
			}
			if(input[i] == 'EOF'){
				goto EXFILE;
			}
		}
		 switch(num){
                        case 0: enemy[n].cnt		=atoi(inputc);break;
                        case 1: enemy[n].pattern	=atoi(inputc);break;
                        case 2: enemy[n].muki	=atoi(inputc);break;
                        case 3: enemy[n].m_knd      =atoi(inputc);break;
                       case 4: enemy[n].hp_max     =atoi(inputc);break;
                        case 5: enemy[n].item       =atoi(inputc);break;
                        case 6: enemy[n].img		=atoi(inputc);break;
                       
                }
		  num++;
          if(num==7){
			  num=0;
			  n++;
		}
	}
	WaitKey();
	
EXFILE:
	FileRead_close(filehandle);

}



// enemy.h

#ifndef ENEMY_H
#define ENEMY_H

#define ENEMY 100
typedef struct{
	    //フラグ、カウンタ、移動パターン、向き、敵の種類、HP最大値、落とすアイテム、画像
        int flag,cnt,pattern,muki,m_knd,hp,hp_max,item,img;
        //座標、速度x成分、速度y成分、スピード、角度
        double  x,y,vx,vy,sp,ang,cnt2;
        //弾幕開始時間、弾幕の種類、弾の種類、色、状態、待機時間、停滞時間
        int bltime,blknd,blknd2,col,state,wtime,wait;

}enemy_t;

extern enemy_t enemy[ENEMY];

extern void draw_enemy(int i);

#endif // ENEMY_H
という風になっており、enemy_t enemey[ENEMY]はほかのcppファイルで実体を作っています。

enemy_1.csvの中身は

カウント,パターン,向き,動き,体力,アイテム,画像
120,2,2,2,100,2,2

のようにしています。
何が間違っているのか、どうしてもわかりません…
文字コードにも関係があるのでしょうか?
なにとぞ助言を下さるとうれしいです。

環境はC++,visualstudio2010 Windows7です。

Rittai_3D
記事: 525
登録日時: 13年前

Re: DXライブラリでのファイル読み込みについて

#2

投稿記事 by Rittai_3D » 12年前

if文の括弧が少ないと思います。

コード:

 if(filehandle = FileRead_open("data/enemy_1.csv") == 0)
から

コード:

  if( ( filehandle = FileRead_open("data/enemy_1.csv")  )== 0)
としてみてください。
初心者です

閉鎖

“C言語何でも質問掲示板” へ戻る