フャイルの読み込み

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

フャイルの読み込み

#1

投稿記事 by ジャン » 12年前

|//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 ;
}

とっち
記事: 56
登録日時: 13年前
住所: 岡山

Re: フャイルの読み込み

#2

投稿記事 by とっち » 12年前

30行目と35行目のif文の条件がおかしいです

コード:

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

コード:

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

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

ジャン

Re: フャイルの読み込み

#3

投稿記事 by ジャン » 12年前

アドバイスどうりにしたら無事、動きました。
感謝です。

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

閉鎖

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