ファイルポインタでエラー??

アバター
せんちゃ
記事: 50
登録日時: 15年前
住所: 江別市東野幌町
連絡を取る:

ファイルポインタでエラー??

投稿記事 by せんちゃ » 14年前

製作中のゲームにて、
音量設定を実装しました!

原理としては普通に

CODE:

void file_printf( void )
{
	FILE* fp;
	fopen_s( &fp , "dat/csv/Volume.csv" , "w" );
	fprintf( fp , "%3d,%3d," , bgm_vol , se_vol );
	fclose (fp);
}
とか

CODE:

void SoundVolumeLoad( void )
{
	FILE* fp = fopen( "dat/csv/Volume.csv" );
	char Buf[32];
	int  n = 0;

	while(1){
		for( int i = 0 ; i < 32 ; i++ ){
			Buf[i] = fgetc(fp);
			if( Buf[i] == ',' ){
				goto ADD_NUMBER;
			}
			if( Buf[i] == EOF ){
				goto FILE_READ_END;
			}
		}
ADD_NUMBER:
		switch(n){
			case 0: bgm_vol = atoi(Buf); break;
			case 1:  se_vol = atoi(Buf); break;
		}
		n++;
	}
FILE_READ_END:
	fclose(fp);
}

てな感じで通常のfopenで書き込んでいますが、
どうもこれだとエラーになります。


VisualStudioでのデバッグだとエラーにはならないのですが、
アーカイブファイルとexeファイルを入れたフォルダ(いわゆる完成状態)
にすると、fopenの時点で引っかかる、


DXライブラリに入っているFileRead系のファイルポインタにしたらこの不具合は起こらず、
普通に動くようになりました。


う~ん

「Win32APIのファイル読み込みも、fopenも同じようなもの」と言われていたので普通に使っていましたが、
これはWinAPIのほうのファイルポインタでいったほうが妥当なのかもしれませんなぁ…

まぁ直ぐに治りそうなバグではありますが、、、

アーカイブなのがいかんのかなぁ…

アバター
qwea
記事: 14
登録日時: 15年前

Re: ファイルポインタでエラー??

投稿記事 by qwea » 14年前

アーカイブにするとfopenでは読み込めませんよ(一つのファイルに纏められているため)
DXLIBのツールがアーカイブしたのでDXLIBの関数のFileRead系でないと読み込めないはずです。