マップがおかしくなります。

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

マップがおかしくなります。

#1

投稿記事 by ひよこ » 16年前

RPGを作っているのですが、
マップ読み込みで変な形になってしまいます。
int Map[15][20];

//マップ情報をエクセルから読み込んで格納する関数
void load_story(){
	int n,num,i,fp;
	char fname[32];
	sprintf(fname,"map%d.csv",0);
	int input[64];
	char inputc[64];

	fp = FileRead_open(fname);//ファイル読み込み
	if(fp == NULL){
		printfDx("read error\n");
		return;
	}
	for(i=0;i<2;i++)//最初の2行読み飛ばす
		while(FileRead_getc(fp)!='\n');

	n=0,num=0;
	while(1){
		for(i=0;i<64;i++){
			inputc=input=FileRead_getc(fp);//1文字取得する
			if(inputc=='/'){//スラッシュがあれば
				while(FileRead_getc(fp)!='\n');//改行までループ
				i=-1;//カウンタを最初に戻して
				continue;
			}
			if(input==',' || input=='\n'){//カンマか改行なら
				inputc='\0';//そこまでを文字列とし
				break;
			}
			if(input==EOF){//ファイルの終わりなら
				goto EXFILE;//終了
			}
		}
		
			Map[n][num]=atoi(inputc);
			num++;
	
		if(num==20){
			num=0;
			n++;
		}
	}
EXFILE:
	FileRead_close(fp);
}

zwi

Re:マップがおかしくなります。

#2

投稿記事 by zwi » 16年前

どう変なのか教えてもらえますか?
気になるのは64バイトしかバッファが無いので3桁の数値が続くと64バイトをオーバーしそうな気がしますが、オーバーしない保障があるならかまいません(私なら2倍以上はバッファの余裕を見ます)。

ひよこ

Re:マップがおかしくなります。

#3

投稿記事 by ひよこ » 16年前

csvで0か1を入れてあるだけなのでオーバーはしないと思います。
わかりずらいと思うので実行結果とcsvを添付しました。

toyo

Re:マップがおかしくなります。

#4

投稿記事 by toyo » 16年前

for(i=0;i<2;i++)//最初の2行読み飛ばす
		while(FileRead_getc(fp)!='\n');
最初の2行を読み飛ばしているからではないでしょうか
csvの3行目のデータから読み込むので画像の結果と一致しています

zwi

Re:マップがおかしくなります。

#5

投稿記事 by zwi » 16年前

確かに3行目から読んでいるのでそれが原因だと思います。
コメント行のスキップ機能とか、どこかのソースを参考にされたんでしょうか?

ひよこ

Re:マップがおかしくなります。

#6

投稿記事 by ひよこ » 16年前

あ、本当に3行目から読んでました。
本当に単純なミスでした。
toyoさん、zwiさんありがとうございました。

閉鎖

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