外部ファイルの読み込みについて。
-
名前なし
外部ファイルの読み込みについて。
外部ファイルの読み込みについて質問です。
マップの切り替えで以下のように、まず一度マップデータが記入されているテキストを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");
}
マップの切り替えで以下のように、まず一度マップデータが記入されているテキストを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: 外部ファイルの読み込みについて。
sprintfという関数を調べたところ関数事態はしたいことが実現できそうなのですが、上記のsprintfを実装し、実行したところ
0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
などと、エラー窓が出ていまいました。
0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
などと、エラー窓が出ていまいました。
-
名前もパスも忘れた
Re: 外部ファイルの読み込みについて。
そもそもこのstage_sceneって何なのかわからん。
もうちょっと詳しく書いたほうがいいね。
ここからエスパーなんだけど、おそらく、このstage_sceneは整数型でかつ、クラスのプロパティか、グローバル変数でステージ番号を管理してるのかな?
もし、別の場所でそのステージ番号を用いて何らかの処理をさせていないなら、Idraさんの言うとおり、文字列型にしてしまって、そのまま直にロードできると思う。
>0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
>などと、エラー窓が出ていまいました。
上の記述そのままは無理よ。
ちゃんとしてない書き方だからね。というか、その辺を上のコードみて、このままじゃおかしいって思わないなら
もう一度ポインタの勉強したほうがいいかも
もうちょっと詳しく書いたほうがいいね。
ここからエスパーなんだけど、おそらく、このstage_sceneは整数型でかつ、クラスのプロパティか、グローバル変数でステージ番号を管理してるのかな?
もし、別の場所でそのステージ番号を用いて何らかの処理をさせていないなら、Idraさんの言うとおり、文字列型にしてしまって、そのまま直にロードできると思う。
>0x004ca03e でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcdcdcdcd に書き込み中にアクセス違反が発生しました。
>などと、エラー窓が出ていまいました。
上の記述そのままは無理よ。
ちゃんとしてない書き方だからね。というか、その辺を上のコードみて、このままじゃおかしいって思わないなら
もう一度ポインタの勉強したほうがいいかも
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
C++ですので、sstreamクラスは使わないのでしょうか?
あと名前をちゃんとつけるという掲示板のルールになっておりますのでよろしくお願いします。
http://dixq.net/board/board.html
【補足】
Idraさんの言われる通りで、配列は不要なのではないでしょうか?
あと名前をちゃんとつけるという掲示板のルールになっておりますのでよろしくお願いします。
http://dixq.net/board/board.html
【補足】
Idraさんの言われる通りで、配列は不要なのではないでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
名前なし
Re: 外部ファイルの読み込みについて。
stage_sceneはint型のグローバル変数でステージを切り替えるタイミングで毎回、stage_sceneに+1してからLoad_Stage()を読んでいます。
上のままではだめだったんですか・・・・。実際ポインタの知識について曖昧なところはあります><ポインタのどの辺勉強すればよろしいでしょうか??
上のままではだめだったんですか・・・・。実際ポインタの知識について曖昧なところはあります><ポインタのどの辺勉強すればよろしいでしょうか??
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
ポインタ全般ですね。最初の肝心の部分が分かっていないと思います。名前なし さんが書きました:stage_sceneはint型のグローバル変数でステージを切り替えるタイミングで毎回、stage_sceneに+1してからLoad_Stage()を読んでいます。
上のままではだめだったんですか・・・・。実際ポインタの知識について曖昧なところはあります><ポインタのどの辺勉強すればよろしいでしょうか??
部分も全部もなくて、全部わからないととんでも無いことになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
別にもうひとつ作ってもらっても問題ありませんので如何でしょうか。名前もパスも忘れた さんが書きました:アカウント作ったけど、ユーザー名のとおり、パスも名前もわすれてしまったwww
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
softya(ソフト屋) さんが書きました:名前なし さんが書きました:quote]
ポインタ全般ですね。最初の肝心の部分が分かっていないと思います。
部分も全部もなくて、全部わからないととんでも無いことになります。
全般ですか。もう一回勉強しなおします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
C++らしい作りで作る方向性を目指すのか、C言語にC++っぽさを加えた程度で完成を目指すのか決められたほうが良いと思います。
ちなみに前者は難易度が高くなります。現状は後者の作り方です。
ちなみに前者は難易度が高くなります。現状は後者の作り方です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ミラ(旧名前パス忘れたさん
Re: 外部ファイルの読み込みについて。
ポインタをしっかり理解するまではCでいいかとおもいます。
ちなみにさっきのランタイムエラーは実体のないポインタに文字列代入しようとして
OS「お前どこに代入してんだよ、そこ書き込み許可だしてねーから」ってことですね。
ちなみにさっきのランタイムエラーは実体のないポインタに文字列代入しようとして
OS「お前どこに代入してんだよ、そこ書き込み許可だしてねーから」ってことですね。
-
c++
Re: 外部ファイルの読み込みについて。
エラーの原因はそういう意味だったんだですか!ポインタを理解していないと今回のは自分で解決するのは難しそうですね。ミラ(旧名前パス忘れたさん さんが書きました:ポインタをしっかり理解するまではCでいいかとおもいます。
ちなみにさっきのランタイムエラーは実体のないポインタに文字列代入しようとして
OS「お前どこに代入してんだよ、そこ書き込み許可だしてねーから」ってことですね。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
名前を統一して固定をお願いします。
一貫して「C++見習い」にするか、もっとちゃんとした名前をお願いします。
一度固定した名前を変更することは混乱をもたらすので、決して行わないで下さい。
一貫して「C++見習い」にするか、もっとちゃんとした名前をお願いします。
一度固定した名前を変更することは混乱をもたらすので、決して行わないで下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
すいません。記入ミス、今気づきました。softya(ソフト屋) さんが書きました:名前を統一して固定をお願いします。
一貫して「C++見習い」にするか、もっとちゃんとした名前をお願いします。
一度固定した名前を変更することは混乱をもたらすので、決して行わないで下さい。
正しくは「C++」ではなく「C++見習い」です。
お手数おかけしました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
こちらの方は結局、C言語+αで行くという方向で良いですね?softya(ソフト屋) さんが書きました:C++らしい作りで作る方向性を目指すのか、C言語にC++っぽさを加えた程度で完成を目指すのか決められたほうが良いと思います。
ちなみに前者は難易度が高くなります。現状は後者の作り方です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
現状ではC+αの段階ですが、ポインタを理解したうえで最終的にはオブジェクト指向プログラミングを目指していますのでC++です。softya(ソフト屋) さんが書きました:softya(ソフト屋) さんが書きました: こちらの方は結局、C言語+αで行くという方向で良いですね?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
と言うことはポインタなどを理解した上で、オブジェクト指向理解して最終的にグローバル変数を無くして、出来るだけポインタではなくsstreamクラスやvectorクラスなどを使ったC++らしいプログラムに組み替えると言う理解でよろしいですか。C++見習い さんが書きました: 現状ではC+αの段階ですが、ポインタを理解したうえで最終的にはオブジェクト指向プログラミングを目指していますのでC++です。
それなら完成させた上で、全部オブジェクト指向で組み直したほうがモチベーションが持ちそうな気がします。途中で組み替えるのは、そうとう労力を使いますよ。
※ C++の言語の勉強と作品の完成を同時に目指すのは、結構危険な綱渡りです。C++の理解が足を引っ張っての挫折者が結構いますので。1から2週で作れる小さな作品の完成を積重ねていくのならGOODな方法だと思います。数ヶ月かかる作品ならBADだと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
作品自体はすでにできていたのですが、この作品を企業に見せた際、最初のところをまとめたほうがよいとのアドバイスいただき、今回は指摘していただいた部分の修正をしていた次第です。しかし思ったより、つまずいてしまったので今回質問させていただきました。softya(ソフト屋) さんが書きました:C++見習い さんが書きました:
と言うことはポインタなどを理解した上で、オブジェクト指向理解して最終的にグローバル変数を無くして、出来るだけポインタではなくsstreamクラスやvectorクラスなどを使ったC++らしいプログラムに組み替えると言う理解でよろしいですか。
それなら完成させた上で、全部オブジェクト指向で組み直したほうがモチベーションが持ちそうな気がします。途中で組み替えるのは、そうとう労力を使いますよ。
※ C++の言語の勉強と作品の完成を同時に目指すのは、結構危険な綱渡りです。C++の理解が足を引っ張っての挫折者が結構いますので。1から2週で作れる小さな作品の完成を積重ねていくのならGOODな方法だと思います。数ヶ月かかる作品ならBADだと思います。
C++らしいプログラムについてもまた、企業からオブジェクト指向は理解しておいたほうがよいとのことでした。C++についての理解は今の段階ではあまりありませんが、最終的にはC++らしいプログラミングをしたいと思っています。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
採用関係なら、こちらからは直接的な回答は避けたほうがよさそうです。
これからは勉強の方向性のアドバイスを致しますね。
この段階だとポインタの理解が、まず必要なのは間違いないと思います。
あと、企業側はどれだけ対応できるかも実力を測るために見ているのでアドバイスをもとに自力でやらないと意味が無いのです。
※ こういう掲示板を採用担当がチェックしている場合もあります。
これからは勉強の方向性のアドバイスを致しますね。
この段階だとポインタの理解が、まず必要なのは間違いないと思います。
あと、企業側はどれだけ対応できるかも実力を測るために見ているのでアドバイスをもとに自力でやらないと意味が無いのです。
※ こういう掲示板を採用担当がチェックしている場合もあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
とにかくポインタですね。こちらも質問する際は気を付けます。softya(ソフト屋) さんが書きました:採用関係なら、こちらからは直接的な回答は避けたほうがよさそうです。
これからは勉強の方向性のアドバイスを致しますね。
この段階だとポインタの理解が、まず必要なのは間違いないと思います。
あと、企業側はどれだけ対応できるかも実力を測るために見ているのでアドバイスをもとに自力でやらないと意味が無いのです。
※ こういう掲示板を採用担当がチェックしている場合もあります。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
ちなみに、No:1で投稿されたコードでメンバ関数の分け方とか、コード自体の流れとか、引数の使い方とか不合理で不慣れな印象を受けます。
これらの整理も「最初のところをまとめたほうがよいとのアドバイス」に含まれる気がします。
これらの整理も「最初のところをまとめたほうがよいとのアドバイス」に含まれる気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
softya(ソフト屋) さんが書きました:ちなみに、No:1で投稿されたコードでメンバ関数の分け方とか、コード自体の流れとか、引数の使い方とか不合理で不慣れな印象を受けます。
これらの整理も「最初のところをまとめたほうがよいとのアドバイス」に含まれる気がします。
今まで、作品を作るのに力を入れて、そういうところにはあまり力をいれてなかったかもしれないです。
-
ミラ(旧名前パス忘れたさん
Re: 外部ファイルの読み込みについて。
何かアプリケーションを根気良く作りきるってところは、評価されてるはずだから
それ以外のことやってるときに、どういう管理のしかたがいいんだろう?とか、ここもうちょっと効率のいいアルゴリズムないかな?
とかで、ぜんぜん変わると思う
それ以外のことやってるときに、どういう管理のしかたがいいんだろう?とか、ここもうちょっと効率のいいアルゴリズムないかな?
とかで、ぜんぜん変わると思う
-
C++見習い
Re: 外部ファイルの読み込みについて。
すいません。長くかかりましたがsprintfの件、解決いたしました。
ご丁寧にアドバイスしていただきありがとうございました。大変勉強になりました。
ご丁寧にアドバイスしていただきありがとうございました。大変勉強になりました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。C++見習い さんが書きました:すいません。長くかかりましたがsprintfの件、解決いたしました。
ご丁寧にアドバイスしていただきありがとうございました。大変勉強になりました。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
C++見習い
Re: 外部ファイルの読み込みについて。
すいません、以下がエラーが出ていたところです。 sprintfより今はsorintf_sが推奨されているらしくそちらに変更いたしました。softya(ソフト屋) さんが書きました:C++見習い さんが書きました:
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
最初つまずいたところはポインタのところで、*strを何も指していない状態で使用していたためエラーが出ていました。 のようにまず領域を確保してから使ったところ解決しました。
お騒がせしていまい申し訳ありませんでした。
-
C++見習い
Re: 外部ファイルの読み込みについて。
C++見習い さんが書きました:すいません、以下がエラーが出ていたところです。 sprintfより今はsorintf_sが推奨されているらしくそちらに変更いたしました。softya(ソフト屋) さんが書きました:C++見習い さんが書きました:
これもルールなのですが、どのように解決したかと出来ればソースコードも投稿して下さい。
あとから見た人の参考になる情報を残すのも掲示板の重要な役目です。
最初つまずいたところはポインタのところで、*strを何も指していない状態で使用していたためエラーが出ていました。 のようにまず領域を確保してから使ったところ解決しました。
お騒がせしていまい申し訳ありませんでした。
sorintf_s→sprintf_s すいません。誤字訂正です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 外部ファイルの読み込みについて。
sprintf_s はマイクロソフト限定の関数なので理解して使う分には良いですがgccなど環境次第でコンパイルできません。
例えばゲーム業界だと使えない場面・状況が大半だと言うことです。
例えばゲーム業界だと使えない場面・状況が大半だと言うことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。