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

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

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

#1

投稿記事 by ノクト » 14年前

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が定義されていない識別子とでました。
しかし、メモリの確保とポインタの宣言を別に分けると
この問題がなくなりました。
なぜ、このようになったのかどなたか教えてください。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

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

#2

投稿記事 by beatle » 14年前

是非エラーが出た場合の完全なソースコードを示して下さい。
codeタグの使い方が間違っていますので、投稿前に必ずプレビューしてください。

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

ノクト

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

#3

投稿記事 by ノクト » 14年前

コード:

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];

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 14年前

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;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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