ページ 11

ファイルへの書き込みについて

Posted: 2008年11月03日(月) 23:20
by
このサイトを見させてもらってゲームが作成したくなり、まずはテトリス等の簡単なものからがいいと
どこかで見た気がしたのでテトリスを作っています。
テトリスのメインは完成したのですが、スコア記録機能もほしくなり、作っていたところ

Debag Assertion Failed!

というエラーが発生してしまいます。
ビルドまではエラーが出ず、デバック時にエラーが出てどこがいけないのかわからず苦戦しています。

下記のコードを追加するまではエラーが出ずに動作していたので、ここが原因だと思います。

FILE *fp;

	if((fp=fopen("DAT.dat","rb"))==NULL){
		if((fp=fopen("DAT,dat","wb+"))==NULL){
			state=10000;
			return;
		}
		else{
			for(i=0;i<10;++i){
			fwrite(0,sizeof(int),1,fp);
			}
			fwrite(0,sizeof(char),1,fp);
			fseek(fp,0,SEEK_SET);
		}
	}

	for(i=0;i<10;++i){
		fread(&score_rank,sizeof(int),1,fp);
	}
	fread(&mode,sizeof(char),1,fp);

	fclose(fp);


もしよろしければ、問題点のご指摘とヒントをください。
あと、問題点以外でも、こうしたほうがいいと思ったところがあれば指摘してくださるとありがたいです。

文章などに不快な点があったり、読みずらかったりしたらすいません。(できれば文章の指摘もお願いします)

Re:ファイルへの書き込みについて

Posted: 2008年11月03日(月) 23:31
by
すいません、追記です。

ここは起動時の初期設定の部分で、DAT.datのファイルがあればそれぞれの変数へ読み込み
ファイルがなければ初期値で作成するものにしたいと思っています。

それぞれの変数は

state :intで宣言しています。main関数で動作分岐の行き先を保持する変数。10000で終了させます。

score_rank:intで宣言しています。スコアを入れる変数です(一応10個用意しています)

mode :charで宣言していますゲームの難易度用の変数です

追記失礼しました。

Re:ファイルへの書き込みについて

Posted: 2008年11月03日(月) 23:41
by たかぎ
処理系が不明ですし、これだけでは断定できないのですが...

> Debag Assertion Failed!

Debugの間違い?
このエラーはどういう出方をしたのでしょうか? そもそも環境ないしは処理系は何でしょうか?
if((fp=fopen("DAT,dat","wb+"))==NULL){
"DAT,dat"であっていますか?
"DAT.dat"の間違いでは?
for(i=0;i<10;++i){
			fwrite(0,sizeof(int),1,fp);
			}
			fwrite(0,sizeof(char),1,fp);
fwriteの第1実引数には、なぜ空ポインタを指定しているのですか?

Re:ファイルへの書き込みについて

Posted: 2008年11月04日(火) 00:00
by
こんなに早くの返信ありがとうございます。

何度も確認したつもりでしたが、環境を書き忘れていますね・・・申し訳ないです。
環境はVisual C++ 2008 Express Editionです。

>"DAT,dat"であっていますか?
>"DAT.dat"の間違いでは?
すいません、完全に打ち間違えていました。

>fwriteの第1実引数には、なぜ空ポインタを指定しているのですか?
0を書き込みたかったので、単純にこう書いていました。
今変数で宣言してそのアドレスを入れたら無事作成されました。
int x=0;
char z=0;
	for(i=0;i<10;++i){
         fwrite(&x,sizeof(int),1,fp);
	}
	fwrite(&z,sizeof(char),1,fp);
fwrite等は初めて使ったので、理解できていなかったようです・・・

おかげで解決することができました。
たかぎさんありがとうございました。

このテトリスが完成したら龍神録プログラミングの館をを読ませていただき、作成していきたいので
今後質問させていただいた時もご指摘いただけるとうれしいです。

※解決を付け忘れていたのと、最後の行の部分を完全に違う意味に見えるように書いていてしまっていたので編集させていただきました。すいません 烏

Re:ファイルへの書き込みについて

Posted: 2008年11月04日(火) 01:43
by
無事完成させることができました。

エラーに苦戦していた時は今日中に完成できると思っていなかったので、本当によかったですw
これで龍神録プログラミングの館を読み始めることができます。
龍神録プログラミングの館のほうでどうしても無理だと思ったら質問させていただくかもしれません。
その時はまたご指摘下さるとうれしいです。

たかぎさん、本当にありがとうございました。