ページ 11

セーブデータ読み込みはできたけれど…

Posted: 2012年11月17日(土) 15:28
by cardinal
http://dixq.net/g/03_11.html
上記のリンクのページを参考にDXライブラリを使っている時のセーブデータの書き込み、読み込みのプログラムを試しに作ってみました。
しかし、書き込み、読み込みは成功するのですが、読み込んだものが画面に表示されていないようなんです。
(ブレークポイントを使ったところ、データは読み込まれているようだし、読み込みが失敗しているならその時の処理ですぐにreturn 0により画面が消えるはずなので)
上記リンクのページではDXライブラリを使っていないから起きている現象なのでしょうが、どうすれば解決するか分かりません。
解決法を教えてください。
↓はその時のソースです。

#include "DxLib.h"

typedef struct{
char name[20],text[255],type[16],color[4];
int num,num1,num2;
}test;


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
SetGraphMode(800,600,32),ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
test Data = {"テスト1","テスト","テスト","赤",3,2,1};
FILE *fp = fopen( "セーブデータ.dat", "wb" );//バイナリファイルを開く
if( fp == NULL ){//エラーが起きたらNULLを返す
return 0;
}
fwrite( &Data, sizeof(Data), 1, fp ); //構造体の中身を出力
fclose( fp );//ファイルを閉じる


test get;
fp = fopen( "セーブデータ.dat", "rb" );
if( fp == NULL ){
return 0;
}
fread( &get, sizeof(get), 1, fp );
fclose( fp );
printf("名=%s\nテキスト=%s\n種類=%s\n色=%s\nナンバー1=%d\nナンバー2=%d\nナンバー3=%d",get.name,get.text,get.type,get.color,get.num,get.num1,get.num2);
WaitKey();

DxLib_End(); // DXライブラリ終了処理
return 0;
}

Re: セーブデータ読み込みはできたけれど…

Posted: 2012年11月17日(土) 15:48
by softya(ソフト屋)
ソースコードが視認しづらいのでcodeタグをご利用ください。
詳細 → http://dixq.net/board/board.html

プログラムをざっと見たところprintfを使っているようですがDXライブラリはウィンドウアプリなのでグラフィック画面しか存在せずprintfの出力対象であるコンソール画面が存在しません。
DXライブラリの関数のDrawFormatString()でグラフィック画面に文字を描画できますので使ってみてください。

Re: セーブデータ読み込みはできたけれど…

Posted: 2012年11月17日(土) 16:07
by cardinal
しまった…printfを変えるのをうっかりしてました。
返信ありがとうございました