ページ 11

freadのプログラムを行ったんですが・・・・

Posted: 2012年4月30日(月) 22:48
by ノクト
freadでファイルを読み込むプログラムをつくったんですが・・・

コード:

int *p;
p=new int[N]; 

FILE *fp;
fp=fopen("test.bin","rb");
fread(p,sizeof(int),N,fp);
fclose(fp);
というふうにコードをつくったんですが、
最初は

short *p=new short[N];

でやったんですが、こうした場合、
fread(p,sizeof(int),N,fp);
のpが定義されていない識別子とでました。
しかし、メモリの確保とポインタの宣言を別に分けると
この問題がなくなりました。
なぜ、このようになったのかどなたか教えてください。

Re: freadのプログラムを行ったんですが・・・・

Posted: 2012年4月30日(月) 22:51
by beatle
是非エラーが出た場合の完全なソースコードを示して下さい。
codeタグの使い方が間違っていますので、投稿前に必ずプレビューしてください。

※pの型が違っているのが気になります。

freadのプログラムを行ったんですが・・・・

Posted: 2012年5月06日(日) 00:56
by ノクト

コード:

int *p;
p=new int[N]; 

FILE *fp;
fp=fopen("test.bin","rb");
fread(p,sizeof(int),N,fp);
fclose(fp);
・・・・・・・・
delete[] p;
とプログラムを書いたんですけど、

int *p=new int[N];

でやったんですが、こうした場合、
fread(p,sizeof(int),N,fp);
の"pが定義されていない識別子"とでました。
しかし、

int *p;
p=new int[N];

と書くと、注意がなくなりました。
なぜこうなったんでしょうか?

Re: freadのプログラムを行ったんですが・・・・

Posted: 2012年5月06日(日) 10:53
by softya(ソフト屋)
beatleさんに注意されていますがcodeタグをご利用下さい。すごく読み辛いのでそれだけで回答者が減ってしまいます。
今回は私が直しておきました。

本題ですが、そのエラーを再現できるプログラムを提示して下さい。
私のところでは、これでエラーが出ません。 gcc version 4.3.4

コード:

#include <iostream>
int main()
{
	const int N = 7;
	int *p = new int[N]; 
	 
	FILE *fp;
	fp=fopen("test.bin","rb");
	fread(p,sizeof(int),N,fp);
	fclose(fp);

	delete[] p;
	return 0;
}