ファイル出力入力のプログラム

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

ファイル出力入力のプログラム

#1

投稿記事 by 狼太郎 » 16年前

ファイルを開き、変数の内容をファイルに移してから、再度読み込み、画面に表示するプログラムを組んだのですが。。
#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と表示してくれません。。
どこが間違っているのでしょうか・・

MNS

Re:ファイル出力入力のプログラム

#2

投稿記事 by MNS » 16年前

fwriteで書き込んだ時点で、ファイル位置は書き込んだデータバイト数進みますので、
fpはファイルの終端を指しているためではないでしょうか?

狼太郎

Re:ファイル出力入力のプログラム

#3

投稿記事 by 狼太郎 » 16年前

そうなんですか。。。
何度もすみませんが、fpをもとの場所をさすようにするにはどうすればいいのでしょうか?

狼太郎

Re:ファイル出力入力のプログラム

#4

投稿記事 by 狼太郎 » 16年前

すみません、fclose(fp);を
間に挟んだらきちんと表示できました!

ですが、コンパイル中に”fopen()の宣言を確認してください”と警告が出てきます。

non

Re:ファイル出力入力のプログラム

#5

投稿記事 by non » 16年前

>fpをもとの場所をさすようにするにはどうすればいいのでしょうか?
fseekを使います。


>fclose(fp);を 間に挟んだらきちんと表示できました!
どういうこと?賢いコンパイラってことかな?

>”fopen()の宣言を確認してください”
fcloseしたなら、使う前にまたfopenしなきゃいけませんよね。

狼太郎

Re:ファイル出力入力のプログラム

#6

投稿記事 by 狼太郎 » 16年前

思った数値を表示することはできたのですが、新たな疑問が・・ホントすみません。
#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)でも同じ結果が返ってきます。

box

Re:ファイル出力入力のプログラム

#7

投稿記事 by box » 16年前

書込みモードでオープン
ファイルへの書込み
ファイルのクローズ

読込みモードでオープン
ファイルからの読込み
ファイルのクローズ

オープンして、使い終わったらクローズする、これ基本です。

non

Re:ファイル出力入力のプログラム

#8

投稿記事 by non » 16年前

>fseek(fp,0,SEEK_END)やfseek(fp,0,SEEK_CUR)でも同じ結果が返ってきます。
読むデータがないのだから、正常に読み込まれていません。
もともとfに格納されている値が表示されているだけ。
別の変数にfreadしてみたらわかると思うけど。

狼太郎

Re:ファイル出力入力のプログラム

#9

投稿記事 by 狼太郎 » 16年前

ありがとうございました!
できました!

閉鎖

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