ファイル処理

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
夏天

ファイル処理

#1

投稿記事 by 夏天 » 17年前

#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を変更しても同じ結果が出てきてしまいます
どうしたらよいのでしょうか

box

Re:ファイル処理

#2

投稿記事 by box » 17年前

> 	// 一行読む
> 	FileRead_getc( FileHandle ) ;
> 
> 	// 画面に描画
> 	DrawString( 0, 0, String, GetColor( 255,255,255 ) ) ;

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

管理人

Re:ファイル処理

#3

投稿記事 by 管理人 » 17年前

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:ファイル処理

#4

投稿記事 by 夏天 » 17年前

恥ずかしながらよく考えるとこの関数は自分のプログラムに使わない関数でした^^;
どうもお騒がせしました・・・

管理人

Re:ファイル処理

#5

投稿記事 by 管理人 » 17年前

まぁ、この処理はCの標準関数で出来ますからDXライブラリ独自のものをつかわなくてもいいですしね^^

閉鎖

“C言語何でも質問掲示板” へ戻る