外部ファイルの読み込みについて。

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

外部ファイルの読み込みについて。

#1

投稿記事 by 名前なし » 12年前

外部ファイルの読み込みについて質問です。
マップの切り替えで以下のように、まず一度マップデータが記入されているテキストをchar*型配列に代入し、マップを切り替えるタイミングでLoad_Stage()でファイルを開きマップデータを配列に入れています。しかしこれだとマップが100個追加となってしまうと、stage配列を以下に100個追加で書かなければいけません。うまくfor文など使ってstage配列に入れるところを一行でまとめることはできないでしょうか。でしょうか?お願いします。
void MAP::Stage_Data()
{
stage[0]="STAGE\\stage_1.txt";
stage[1]="STAGE\\stage_2.txt";
stage[2]="STAGE\\stage_3.txt";
stage[3]="STAGE\\stage_4.txt";
stage[4]="STAGE\\stage_5.txt";
stage[5]="STAGE\\stage_6.txt";
stage[6]="STAGE\\stage_7.txt";
stage[7]="STAGE\\stage_8.txt";
stage[8]="STAGE\\stage_9.txt";
stage[9]="STAGE\\stage_10.txt";
}

//ステージの読み込み
void MAP::Load_Stage()
{
fp=NULL;

char tmp='0';


File_Load(stage[stage_scene]);

if(fp==NULL)
{
int cr= GetColor(0,0,0);

MessageBox(0,"fp=NULL","",MB_OK);
}

//fileが最後まで読み込まれるまでtmpにfileの情報を一文字ずついれる
else
{
while((tmp=fgetc(fp))!=EOF)
{
if(tmp=='5')
{
MAX_COIN++;
}
if((tmp >= '0'&&tmp<='7')||tmp=='t'||tmp=='e')//tmpが0~5ならば
{

cell->Initialize(tmp);

}
}

fclose(fp);
}
}

void MAP::File_Load(char *file)
{
fopen_s((&fp),file,"r");
}

名前もパスも忘れた

Re: 外部ファイルの読み込みについて。

#2

投稿記事 by 名前もパスも忘れた » 12年前

コード:

const int STAGE_MAX = /*mapデータの最大数*/
void MAP::Stage_Data()
{
	char* str;
	for(int i=0;i<STAGE_MAX;i++)
	{
		sprintf(str, "STAGE\\stage_%d.txt", i+1);
		stage[i] = str;
	}
}
おそらくこんな感じかと

Idra

Re: 外部ファイルの読み込みについて。

#3

投稿記事 by Idra » 12年前

ファイルをロードするタイミングでstage_sceneからファイル名を作成すれば
stage配列は不要になりそう

名前なし

Re: 外部ファイルの読み込みについて。

#4

投稿記事 by 名前なし » 12年前

sprintfという関数を調べたところ関数事態はしたいことが実現できそうなのですが、上記のsprintfを実装し、実行したところ
0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
などと、エラー窓が出ていまいました。

名前もパスも忘れた

Re: 外部ファイルの読み込みについて。

#5

投稿記事 by 名前もパスも忘れた » 12年前

そもそもこのstage_sceneって何なのかわからん。
もうちょっと詳しく書いたほうがいいね。

ここからエスパーなんだけど、おそらく、このstage_sceneは整数型でかつ、クラスのプロパティか、グローバル変数でステージ番号を管理してるのかな?
もし、別の場所でそのステージ番号を用いて何らかの処理をさせていないなら、Idraさんの言うとおり、文字列型にしてしまって、そのまま直にロードできると思う。

>0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
>などと、エラー窓が出ていまいました。

上の記述そのままは無理よ。
ちゃんとしてない書き方だからね。というか、その辺を上のコードみて、このままじゃおかしいって思わないなら
もう一度ポインタの勉強したほうがいいかも

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

Re: 外部ファイルの読み込みについて。

#6

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

C++ですので、sstreamクラスは使わないのでしょうか?
あと名前をちゃんとつけるという掲示板のルールになっておりますのでよろしくお願いします。
http://dixq.net/board/board.html

【補足】
Idraさんの言われる通りで、配列は不要なのではないでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

名前なし

Re: 外部ファイルの読み込みについて。

#7

投稿記事 by 名前なし » 12年前

stage_sceneはint型のグローバル変数でステージを切り替えるタイミングで毎回、stage_sceneに+1してからLoad_Stage()を読んでいます。

上のままではだめだったんですか・・・・。実際ポインタの知識について曖昧なところはあります><ポインタのどの辺勉強すればよろしいでしょうか??

C++見習い

Re: 外部ファイルの読み込みについて。

#8

投稿記事 by C++見習い » 12年前

>>softya

すいませんでした><。以後気をつけます。

名前もパスも忘れた

Re: 外部ファイルの読み込みについて。

#9

投稿記事 by 名前もパスも忘れた » 12年前

アカウント作ったけど、ユーザー名のとおり、パスも名前もわすれてしまったwww

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

Re: 外部ファイルの読み込みについて。

#10

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

名前なし さんが書きました:stage_sceneはint型のグローバル変数でステージを切り替えるタイミングで毎回、stage_sceneに+1してからLoad_Stage()を読んでいます。

上のままではだめだったんですか・・・・。実際ポインタの知識について曖昧なところはあります><ポインタのどの辺勉強すればよろしいでしょうか??
ポインタ全般ですね。最初の肝心の部分が分かっていないと思います。
部分も全部もなくて、全部わからないととんでも無いことになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

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

Re: 外部ファイルの読み込みについて。

#11

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

名前もパスも忘れた さんが書きました:アカウント作ったけど、ユーザー名のとおり、パスも名前もわすれてしまったwww
別にもうひとつ作ってもらっても問題ありませんので如何でしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#12

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:
名前なし さんが書きました:quote]

ポインタ全般ですね。最初の肝心の部分が分かっていないと思います。
部分も全部もなくて、全部わからないととんでも無いことになります。

全般ですか。もう一回勉強しなおします。

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

Re: 外部ファイルの読み込みについて。

#13

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

C++らしい作りで作る方向性を目指すのか、C言語にC++っぽさを加えた程度で完成を目指すのか決められたほうが良いと思います。
ちなみに前者は難易度が高くなります。現状は後者の作り方です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ミラ(旧名前パス忘れたさん

Re: 外部ファイルの読み込みについて。

#14

投稿記事 by ミラ(旧名前パス忘れたさん » 12年前

ポインタをしっかり理解するまではCでいいかとおもいます。
ちなみにさっきのランタイムエラーは実体のないポインタに文字列代入しようとして
OS「お前どこに代入してんだよ、そこ書き込み許可だしてねーから」ってことですね。

c++

Re: 外部ファイルの読み込みについて。

#15

投稿記事 by c++ » 12年前

ミラ(旧名前パス忘れたさん さんが書きました:ポインタをしっかり理解するまではCでいいかとおもいます。
ちなみにさっきのランタイムエラーは実体のないポインタに文字列代入しようとして
OS「お前どこに代入してんだよ、そこ書き込み許可だしてねーから」ってことですね。
エラーの原因はそういう意味だったんだですか!ポインタを理解していないと今回のは自分で解決するのは難しそうですね。

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

Re: 外部ファイルの読み込みについて。

#16

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

名前を統一して固定をお願いします。
一貫して「C++見習い」にするか、もっとちゃんとした名前をお願いします。
一度固定した名前を変更することは混乱をもたらすので、決して行わないで下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#17

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:名前を統一して固定をお願いします。
一貫して「C++見習い」にするか、もっとちゃんとした名前をお願いします。
一度固定した名前を変更することは混乱をもたらすので、決して行わないで下さい。
すいません。記入ミス、今気づきました。
正しくは「C++」ではなく「C++見習い」です。

お手数おかけしました。

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

Re: 外部ファイルの読み込みについて。

#18

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

softya(ソフト屋) さんが書きました:C++らしい作りで作る方向性を目指すのか、C言語にC++っぽさを加えた程度で完成を目指すのか決められたほうが良いと思います。
ちなみに前者は難易度が高くなります。現状は後者の作り方です。
こちらの方は結局、C言語+αで行くという方向で良いですね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#19

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:
softya(ソフト屋) さんが書きました: こちらの方は結局、C言語+αで行くという方向で良いですね?
現状ではC+αの段階ですが、ポインタを理解したうえで最終的にはオブジェクト指向プログラミングを目指していますのでC++です。

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

Re: 外部ファイルの読み込みについて。

#20

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

C++見習い さんが書きました: 現状ではC+αの段階ですが、ポインタを理解したうえで最終的にはオブジェクト指向プログラミングを目指していますのでC++です。
と言うことはポインタなどを理解した上で、オブジェクト指向理解して最終的にグローバル変数を無くして、出来るだけポインタではなくsstreamクラスやvectorクラスなどを使ったC++らしいプログラムに組み替えると言う理解でよろしいですか。
それなら完成させた上で、全部オブジェクト指向で組み直したほうがモチベーションが持ちそうな気がします。途中で組み替えるのは、そうとう労力を使いますよ。

※ C++の言語の勉強と作品の完成を同時に目指すのは、結構危険な綱渡りです。C++の理解が足を引っ張っての挫折者が結構いますので。1から2週で作れる小さな作品の完成を積重ねていくのならGOODな方法だと思います。数ヶ月かかる作品ならBADだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#21

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:
C++見習い さんが書きました:

と言うことはポインタなどを理解した上で、オブジェクト指向理解して最終的にグローバル変数を無くして、出来るだけポインタではなくsstreamクラスやvectorクラスなどを使ったC++らしいプログラムに組み替えると言う理解でよろしいですか。
それなら完成させた上で、全部オブジェクト指向で組み直したほうがモチベーションが持ちそうな気がします。途中で組み替えるのは、そうとう労力を使いますよ。

※ C++の言語の勉強と作品の完成を同時に目指すのは、結構危険な綱渡りです。C++の理解が足を引っ張っての挫折者が結構いますので。1から2週で作れる小さな作品の完成を積重ねていくのならGOODな方法だと思います。数ヶ月かかる作品ならBADだと思います。
作品自体はすでにできていたのですが、この作品を企業に見せた際、最初のところをまとめたほうがよいとのアドバイスいただき、今回は指摘していただいた部分の修正をしていた次第です。しかし思ったより、つまずいてしまったので今回質問させていただきました。

C++らしいプログラムについてもまた、企業からオブジェクト指向は理解しておいたほうがよいとのことでした。C++についての理解は今の段階ではあまりありませんが、最終的にはC++らしいプログラミングをしたいと思っています。

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

Re: 外部ファイルの読み込みについて。

#22

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

採用関係なら、こちらからは直接的な回答は避けたほうがよさそうです。
これからは勉強の方向性のアドバイスを致しますね。

この段階だとポインタの理解が、まず必要なのは間違いないと思います。
あと、企業側はどれだけ対応できるかも実力を測るために見ているのでアドバイスをもとに自力でやらないと意味が無いのです。
※ こういう掲示板を採用担当がチェックしている場合もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#23

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:採用関係なら、こちらからは直接的な回答は避けたほうがよさそうです。
これからは勉強の方向性のアドバイスを致しますね。

この段階だとポインタの理解が、まず必要なのは間違いないと思います。
あと、企業側はどれだけ対応できるかも実力を測るために見ているのでアドバイスをもとに自力でやらないと意味が無いのです。
※ こういう掲示板を採用担当がチェックしている場合もあります。
とにかくポインタですね。こちらも質問する際は気を付けます。

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

Re: 外部ファイルの読み込みについて。

#24

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

ちなみに、No:1で投稿されたコードでメンバ関数の分け方とか、コード自体の流れとか、引数の使い方とか不合理で不慣れな印象を受けます。
これらの整理も「最初のところをまとめたほうがよいとのアドバイス」に含まれる気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#25

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:ちなみに、No:1で投稿されたコードでメンバ関数の分け方とか、コード自体の流れとか、引数の使い方とか不合理で不慣れな印象を受けます。
これらの整理も「最初のところをまとめたほうがよいとのアドバイス」に含まれる気がします。

今まで、作品を作るのに力を入れて、そういうところにはあまり力をいれてなかったかもしれないです。

ミラ(旧名前パス忘れたさん

Re: 外部ファイルの読み込みについて。

#26

投稿記事 by ミラ(旧名前パス忘れたさん » 12年前

何かアプリケーションを根気良く作りきるってところは、評価されてるはずだから
それ以外のことやってるときに、どういう管理のしかたがいいんだろう?とか、ここもうちょっと効率のいいアルゴリズムないかな?
とかで、ぜんぜん変わると思う

C++見習い

Re: 外部ファイルの読み込みについて。

#27

投稿記事 by C++見習い » 12年前

すいません。長くかかりましたがsprintfの件、解決いたしました。

ご丁寧にアドバイスしていただきありがとうございました。大変勉強になりました。

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

Re: 外部ファイルの読み込みについて。

#28

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

C++見習い さんが書きました:すいません。長くかかりましたがsprintfの件、解決いたしました。

ご丁寧にアドバイスしていただきありがとうございました。大変勉強になりました。
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

C++見習い

Re: 外部ファイルの読み込みについて。

#29

投稿記事 by C++見習い » 12年前

softya(ソフト屋) さんが書きました:
C++見習い さんが書きました:
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
すいません、以下がエラーが出ていたところです。

コード:

sprintf_s(str,30,"STAGE\\stage_%d.txt",stage_select);
sprintfより今はsorintf_sが推奨されているらしくそちらに変更いたしました。

最初つまずいたところはポインタのところで、*strを何も指していない状態で使用していたためエラーが出ていました。

コード:

str= new char[30];
のようにまず領域を確保してから使ったところ解決しました。

お騒がせしていまい申し訳ありませんでした。

C++見習い

Re: 外部ファイルの読み込みについて。

#30

投稿記事 by C++見習い » 12年前

C++見習い さんが書きました:
softya(ソフト屋) さんが書きました:
C++見習い さんが書きました:
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
すいません、以下がエラーが出ていたところです。

コード:

sprintf_s(str,30,"STAGE\\stage_%d.txt",stage_select);
sprintfより今はsorintf_sが推奨されているらしくそちらに変更いたしました。

最初つまずいたところはポインタのところで、*strを何も指していない状態で使用していたためエラーが出ていました。

コード:

str= new char[30];
のようにまず領域を確保してから使ったところ解決しました。

お騒がせしていまい申し訳ありませんでした。

sorintf_s→sprintf_s すいません。誤字訂正です。

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

Re: 外部ファイルの読み込みについて。

#31

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

sprintf_s はマイクロソフト限定の関数なので理解して使う分には良いですがgccなど環境次第でコンパイルできません。
例えばゲーム業界だと使えない場面・状況が大半だと言うことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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