トップページ > 過去ログ > 記事閲覧
C言語標準ライブラリ関数freadについて
名前:優柔不断 日時: 2007/05/24 23:07

ファイルを開く関数fopenでモード文字列 "r" として 適当なバイナリファイルを開き、 fread関数で読み込もうとしたのですが、その場所でエラーが起きて、読み込みができないのです。 コンパイルに問題はなく、しかも書き込みは問題なく、 しかもfopenには問題はないのですが…。問題のソースコードを示しますので、 どうか協力お願いします。 ソースコード↓ #include<stdio.h> typedef struct{ int deta1; double data2; } kouzoutai; int main() { FILE *file; kouzoutai yomikomidata; fopen("file.bin","r"); fread(&yomikomi,sizeof(yomikomi),2,file); fclose(file); return 0; } 環境 BCC・BCC Developer

Page: 1 |

Re: C言語標準ライブラリ関数freadについて ( No.2 )
名前:名無し 日時:2007/05/25 01:07

yomikomi が何なのかわかりませんが、 file = fopen("file.bin","r"); としてfopenの戻値を受け取ってないのが問題ですね。 今のままではfileは初期値のままなのでどこを指してるのかわかりません。
Re: C言語標準ライブラリ関数freadについて ( No.3 )
名前:お父さん 日時:2007/05/25 02:47

名無しさん いやあ、本当ですね。freadのほうにばかり目が行って、fopenに気がつきませんでした。 私のほうの返信は見当はずれでしたから、優柔不断さんにご迷惑をかけてもいけませんので消しておきます。優柔 不断さんどうもすみませんでした。 私も勉強になりました。名無しさんどうもありがとうございました。
Re: C言語標準ライブラリ関数freadについて ( No.4 )
名前:Will 日時:2007/05/25 07:10

エラーとは直接関係ないですが Windows系OSでファイルデータをバイナリで読む場合にはオープンモードに"rb"を指定しないと、データを正しく読めません。 あと >fread(&yomikomi,sizeof(yomikomi),2,file); yomokomiがyomokomidataの間違いであるとすれば、第3引数は1としないとバッファオーバーランします。(ファイルデータがyomikomidataのサイズよりも大きい場合)
Re: C言語標準ライブラリ関数freadについて ( No.5 )
名前:優柔不断 日時:2007/05/25 13:43

すいません、最初のソースコードが間違えてて、しかし、Willさんの言うとおりに、freadの第三引数を1にしたら、うまくいきました、ありがとうございました。

Page: 1 |