ページ 1 / 1
ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 19:25
by 狼太郎
ファイルを開き、変数の内容をファイルに移してから、再度読み込み、画面に表示するプログラムを組んだのですが。。
#include<stdio.h>
#include"DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1)return -1;
FILE *fp;
int f=1000;
fp=fopen("aaa.dat","wb+");
fwrite(&f,sizeof(f),1,fp);
fread(&f,sizeof(f),1,fp);
fclose(fp);
printfDx("%d",f);
ScreenFlip();
WaitKey();
DxLib_End();
return 0;
}
コンパイルは成功するのですが、画面に、1000と表示してくれません。。
どこが間違っているのでしょうか・・
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 19:40
by MNS
fwriteで書き込んだ時点で、ファイル位置は書き込んだデータバイト数進みますので、
fpはファイルの終端を指しているためではないでしょうか?
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 19:56
by 狼太郎
そうなんですか。。。
何度もすみませんが、fpをもとの場所をさすようにするにはどうすればいいのでしょうか?
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 20:02
by 狼太郎
すみません、fclose(fp);を
間に挟んだらきちんと表示できました!
ですが、コンパイル中に”fopen()の宣言を確認してください”と警告が出てきます。
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 20:11
by non
>fpをもとの場所をさすようにするにはどうすればいいのでしょうか?
fseekを使います。
>fclose(fp);を 間に挟んだらきちんと表示できました!
どういうこと?賢いコンパイラってことかな?
>”fopen()の宣言を確認してください”
fcloseしたなら、使う前にまたfopenしなきゃいけませんよね。
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 21:16
by 狼太郎
思った数値を表示することはできたのですが、新たな疑問が・・ホントすみません。
#include<stdio.h>
#include"DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd){
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1)return -1;
FILE *fp;
int f=1000;
fp=fopen("aaa.dat","wb+");
fwrite(&f,sizeof(f),1,fp);
fseek(fp,0,SEEK_SET);
fread(&f,sizeof(f),1,fp);
fclose(fp);
printfDx("%d",f);
ScreenFlip();
WaitKey();
DxLib_End();
return 0;
}
このfseek(fp,0,SEEK_SET)で先頭まで戻し、表示はできたのですが・・
fseek(fp,0,SEEK_END)やfseek(fp,0,SEEK_CUR)でも同じ結果が返ってきます。
Re:ファイル出力入力のプログラム
Posted: 2009年9月01日(火) 23:25
by box
書込みモードでオープン
ファイルへの書込み
ファイルのクローズ
読込みモードでオープン
ファイルからの読込み
ファイルのクローズ
オープンして、使い終わったらクローズする、これ基本です。
Re:ファイル出力入力のプログラム
Posted: 2009年9月02日(水) 11:37
by non
>fseek(fp,0,SEEK_END)やfseek(fp,0,SEEK_CUR)でも同じ結果が返ってきます。
読むデータがないのだから、正常に読み込まれていません。
もともとfに格納されている値が表示されているだけ。
別の変数にfreadしてみたらわかると思うけど。
Re:ファイル出力入力のプログラム
Posted: 2009年9月06日(日) 19:41
by 狼太郎
ありがとうございました!
できました!