ファイル操作について質問です!

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

ファイル操作について質問です!

#1

投稿記事 by もも » 13年前

こんばんは C言語初心者のももです!

現在C言語でゲーム作成を行っており、プレイヤーのステータス(HPとか)をファイルから読み込んでみたいと思い作業に取り組んでいます。

//プレイヤーのデータをロードする-------------------------------------------------------
LoadData( char *file_name )
{
int _hp;
int _sp;

//ファイルオープン
FILE *fp = fopen( file_name,"r" );

if( fp==NULL ){ throw system::Exception("ファイルを開くのに失敗したお\(^0^)/"); }

//hpのロード
fscanf(fp, "%d", &(_hp));
//spのロード
fscanf(fp, "%d", &(_sp));

//ファイルクローズ
fclose(fp);

hp = _hp;
sp = _sp;
}

現在上の様な感じでデータを読み込んでいます

ファイルの中身はこんな感じです。

//ファイルの中身 //
255 //
0 //
////////////////

これをHPという文字があれば255を読み込む、SPという文字があれば0を読み込むという感じにしたいのですが、
どうすればよいのですか?
どこかサンプルになるようなコードが書かれたサイトとかありませんか?
よければサンプルとか書いてくれれば嬉しいです。

//ファイルの中身 //
HP 255 //
SP 0 //
////////////////

non
記事: 1097
登録日時: 15年前

Re: ファイル操作について質問です!

#2

投稿記事 by non » 13年前

もも さんが書きました:これをHPという文字があれば255を読み込む、SPという文字があれば0を読み込むという感じにしたいのですが、
この考え方が本当に必要でしょうか?
頭に、HPやSPをつける必要があるの?
1行目がHP,2行目がSPで良いのでは?

どうしてもやりたいなら、それでもいいけど。
まず、1行ずつfgetsでデータを読み、
先頭の文字がHPかチェックし、HPなら、sscanfなどを使って数値を取り込みます。
HPでなければ、同様にSPかチェックします。

どころで、データの後に付いているスラッシュは何?コメント?
non

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ファイル操作について質問です!

#3

投稿記事 by softya(ソフト屋) » 13年前

んん?
throw system::Exception("ファイルを開くのに失敗したお\(^0^)/"); }
ってC++/CLIの例外処理では? C言語で使うべきものじゃないですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: ファイル操作について質問です!

#4

投稿記事 by h2so5 » 13年前

softya(ソフト屋) さんが書きました:んん?
throw system::Exception("ファイルを開くのに失敗したお\(^0^)/"); }
ってC++/CLIの例外処理では? C言語で使うべきものじゃないですね。
C++/CLIはSystem::Exceptionですから、それとも違うようですね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ファイル操作について質問です!

#5

投稿記事 by softya(ソフト屋) » 13年前

h2so5 さんが書きました:
softya(ソフト屋) さんが書きました:んん?
throw system::Exception("ファイルを開くのに失敗したお\(^0^)/"); }
ってC++/CLIの例外処理では? C言語で使うべきものじゃないですね。
C++/CLIはSystem::Exceptionですから、それとも違うようですね。
あっ、失礼しました。確かに違いますね。
C++の独自実装でしょうか? だとしてもC言語の学習で使うのは違和感がありますね。
どこかの学校のライブラリなんでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

フィア

Re: ファイル操作について質問です!

#6

投稿記事 by フィア » 13年前

注文の品作ってみました

コード:

LoadData( char *file_name ){

	FILE *fp;
	char stet[20];
	int han;
	int suuti;
	int _hp;
	int _sp;

	fp = fopen( file_name,"r" );

	if( fp == NULL ){
		printf( "ファイルを開くのに失敗したお\(^0^)/\n");
	}

	while( ( han = fscanf( fp, "%s %d", stet, &suuti ) ) != EOF ){
		if(strcmp(stet,"HP")==0){_hp=suuti;}
		if(strcmp(stet,"SP")==0){_sp=suuti;}
	}

	fclose( fp );

	//変数に入ってるかの確認用
	printf("HP %d\n",_hp);
	printf("SP %d\n",_sp);

}
補足
わざわざ特定の文字列が示された数値を特定の変数に入れるだけよりも
特定の文字列用の変数も用意したほうがいいかも

後、できれば構造体を作ってステータス専用のデータを格納したほうがいいです。

もも

Re: ファイル操作について質問です!

#7

投稿記事 by もも » 13年前

ありがとうございました!!

閉鎖

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