ページ 11

ファイル処理

Posted: 2007年3月06日(火) 22:09
by 夏天
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int FileHandle ;
char String[256] ;

// DXライブラリの初期化
if( DxLib_Init() == -1 ) return -1 ;

// test.cpp ファイルを開く
FileHandle = FileRead_open( "test.cpp" ) ;

// 一行読む
FileRead_getc( FileHandle ) ;

// 画面に描画
DrawString( 0, 0, String, GetColor( 255,255,255 ) ) ;

// キー入力を待つ
WaitKey() ;

// ファイルを閉じる
FileRead_close( FileHandle ) ;

// DXライブラリの後始末
DxLib_End() ;

return 0 ;
}

これをコンパイルすると横1行にフフフフフフフフフフフフフフフフフフフ・・・・・・・(以下略)
と出てきます。
ちなみにtest.cppを変更しても同じ結果が出てきてしまいます
どうしたらよいのでしょうか

Re:ファイル処理

Posted: 2007年3月06日(火) 22:29
by box
> 	// 一行読む
> 	FileRead_getc( FileHandle ) ;
> 
> 	// 画面に描画
> 	DrawString( 0, 0, String, GetColor( 255,255,255 ) ) ;

ファイルから読んだ内容をStringにセットしていないように見えるのですけれど…。
念のためご確認ください。

Re:ファイル処理

Posted: 2007年3月07日(水) 16:54
by 管理人
DXライブラリの関数説明をよく読んでみてください。
宣言 int FileRead_getc( int FileHandle ) ;

 
概略  ファイルから一文字読み出す

 
引数 int FileHandle : ファイルハンドル

 
戻り値  -1以外:読み出した文字コード 
  -1:エラー発生
この関数は1文字読み込む関数です。
しかも使い方が間違っています。
関数から文字データが返って来ているのに、どこにも受け取っていません。

char ch;
ch = 関数;

といったように、かえってきたものを受け取ってください。

それに1バイト文字つまり半角英数しか使用できません。

1行読み込むんでしたら
宣言 int FileRead_gets( char *Buffer, int Num, int FileHandle ) ;

 
概略  ファイルから一行読み出す

 
引数 char *Buffer : 読み出した文字列を格納するメモリ領域の先頭アドレス
int Num : 文字列を格納するメモリ領域のサイズ
int FileHandle : ファイルハンドル

 
戻り値  -1以外:読み出した文字列の長さ 
  -1:エラー発生
こちらを使ってください。

Re:ファイル処理

Posted: 2007年3月08日(木) 21:49
by 夏天
恥ずかしながらよく考えるとこの関数は自分のプログラムに使わない関数でした^^;
どうもお騒がせしました・・・

Re:ファイル処理

Posted: 2007年3月09日(金) 16:22
by 管理人
まぁ、この処理はCの標準関数で出来ますからDXライブラリ独自のものをつかわなくてもいいですしね^^