ページ 11

フャイルの読み込み

Posted: 2013年1月11日(金) 15:33
by ジャン
|//name |//GOLD |//AT |
|木の棒   |30 |10 |
|鉄の剣  |40 |20 |

このようなcsvファイルを読み込むにはどうしたらいいんですか?
管理人さんのサイトを参考にしてもよくわかりません。
よろしくおねがいします。

コード:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
				   LPSTR lpCmdLine, int nCmdShow ){
	ChangeWindowMode( TRUE ) ;
	DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); 

	int input[64];
	char inputc[64];

	class item{
	public:
		int gold,at;
		char* name;
	};
	int i;
	int fileitem;

	item item[3];

	fileitem=FileRead_open("item.csv");
	if(fileitem==NULL){
		printfDx("read error\n");
		//return;
	}
	while(FileRead_getc(fileitem)!='\n');
	int n=0;
	int num=0;
	while(1){
		for(i=0;i<64;i++){
			inputc[i]=input[i]=FileRead_getc(fileitem);
			if(inputc[i]='/'){
				while(FileRead_getc(fileitem)!='\n');
				i=-1;
				continue;
			}
			if(input[i]=','||input[i]=='\n'){
				inputc[i]='\0';
				break;
			}
			if(input[i]==EOF){
				goto EXFILE;
			}
		}
		switch(num){
			case 0: item[n].name=inputc;break;
			case 1: item[n].gold=atoi(inputc);break;
			case 2: item[n].at=atoi(inputc);break;
		}
		num++;
		if(num==3){
			num=0;
			n++;
		}
	}
EXFILE:
	FileRead_close(fileitem);

	while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

	DrawString(0,0,(const char*)item[0].cate,GetColor(255,255,255));
	 }

	// DXライブラリの後始末
	DxLib_End() ;

	return 0 ;
}

Re: フャイルの読み込み

Posted: 2013年1月11日(金) 15:56
by とっち
30行目と35行目のif文の条件がおかしいです

コード:

if(input[i]='/')
だとinputに/という文字を代入してしまっています
比較は

コード:

if(input[i]=='/')
このように書きます。
プログラムが動かない最大の理由はこれです

これを直すと表示されるようになるのですが、きれいには表示されません。
理由は44行目です。
これについてはstrcpy関数について調べるといいです。

Re: フャイルの読み込み

Posted: 2013年1月11日(金) 16:52
by ジャン
アドバイスどうりにしたら無事、動きました。
感謝です。

我ながら誤字脱字だらけです。もっと気よ付けよう・・・。