プロが教えるわが家の防犯対策術!

はじめまして。
質問があります。
現在Visual C++ 2005 Express Editionを使用してC言語を学習中なのですが、fopen()関数に指定したテキストファイルを読み込んでくれませ
ん。何か設定が必要なのでしょうか?ご教授お願いします。

A 回答 (6件)

Ans No.1の者です。



>テキストファイルをどこに配置したら良いのかまた、fopen()で
>テキストファイルをオープンするためにプロジェクトに追加するとか、そういった設定方法がわからないのです。

扱いたいファイルをどこに置くかは自由です。
置いた場所を、プログラムで正しく指定すればよいのです。
また、プロジェクトとは特に関係なくて、追加などの操作を行なう必要はないはずです。

>if( (fp=fopen("hw.dat","r")) == NULL )

このコードの場合、実行ファイル(exeファイル)が
存在するフォルダと同じところにhw.datがあればよいです。

この回答への補足

miraiya様へ
ご回答ありがとうございます。
>このコードの場合、実行ファイル(exeファイル)が
>存在するフォルダと同じところにhw.datがあればよいです。
確かに実行ファイルがあるフォルダにhw.datを配置しているのですが、
ファイルをオープンしてくれません。
どうしたらよいでしょうか?

補足日時:2007/02/19 17:03
    • good
    • 0
この回答へのお礼

miraiya様へ

ご回答ありがとうございました。
いろいろテキストファイルの配置をかえて
試みたところ、無事にファイルをオープンすることが
できました。
「プロジェクトとは特に関係なくて、追加などの操作を行なう必要はないはずです」は、大変参考になりました。

お礼日時:2007/02/19 18:30

おそらくですが...



プロジェクトをプロパティーを確認してください。
実行ファイルの出力先(構成プロパティ内の、全般、出力ディレクトリ)と、デバッグ時の作業フォルダ(構成プロパティ、デバッグ、作業ディレクトリ)を同じ値に設定してください。
すると、実行ファイルと同じ場所に置いたファイルがそのまま読めるはずです。
    • good
    • 0
この回答へのお礼

yosi_yosi様へ
ご回答ありがとうございます。
問題が解決しました。
どうやらテキストファイルの配置位置をいろいろかえて
試したところ、ファイルをオープンすることができました。
yosi_yosi様のご指摘の方法を試してみたいと思います。

お礼日時:2007/02/19 18:24

"2" no such file or directory ですね。


なら、勘ですが。。

読み込ませようとしているファイルの拡張子が"dat"のようなので、思ったんですが
Windowsで拡張子.dat というのは、システムに登録されている拡張子です。
ひょっとしたら、"hw.dat"を読み込ませたいのに、"hw.dat.dat"のように実際のファイル名は
なっているのかもしれませんね。
すべての拡張子を表示するように、Exprolerの設定がなっているか確認してみてください。
    • good
    • 0
この回答へのお礼

PED02744様へ

ご回答ありがとうございます。
問題が解決しました。
どうやらテキストファイルの配置位置をいろいろかえて
試したところ、ファイルをオープンすることができました。
errno定数をチェックするという試みを教えてくださいまして
ありがとうございました。これからの学習でもいろいろ
試していきたいと思います。

お礼日時:2007/02/19 18:27

fileがオープンできないときのエラーコードはなんですか?


errno グローバル定数をチェックしてみてくださいな。

この回答への補足

PED02744様へ
ご回答ありがとうございます。
>errno グローバル定数をチェック
チェック方法がよくわかりません。
ご教授お願いします。

補足日時:2007/02/19 17:06
    • good
    • 0
この回答へのお礼

PED02744様へ

errno グローバル定数をチェックしましたところ、「2」と表示
されました。どうやらファイルを見つけられないでいるようです。
どうしたらよいでしょうか?ご教授お願いします。

お礼日時:2007/02/19 17:22

もしかしてさ


fopen()呼んだらそれにすぐ内容が読み込まれると思ってない?
fopenは文字通り 開くだけだよ。
取り出すのは別の操作。

fopenは 本棚から本を取り出すだけ 読むのは別

この回答への補足

SAYKA様へ

ご回答ありがとうございます。
誤解させてしまうような質問をしてしまい、すみません。
ファイルをオープンしたいのですが、どこにファイルを
配置して、何かプロジェクトに追加などのような設定が
必要なのかどうかが、わかりません。
どうかご教授お願いします。

補足日時:2007/02/19 16:21
    • good
    • 0
この回答へのお礼

SAYKA様へ
ご回答ありがとうございました。
「fopenは 本棚から本を取り出すだけ 読むのは別」
は基本的なことではあると思いますが、
大変勉強になりました。

お礼日時:2007/02/19 18:33

>fopen()関数に指定したテキストファイルを読み込んでくれません。



どんなコードを書いて、どんな風になったので
「読み込んでくれない」と判断されましたか?

まずはコードを見せてください。
また、何かエラーが出たのでしたら、
そのときのメッセージを提示してください。

この回答への補足

miraiya様へ

ご回答ありがとうございます。
誤った質問のしかたをしてしまいました。
「fopen()関数に指定したテキストファイルを読み込んでくれません。」
ではなく、「fopen()関数に指定したテキストファイルをオープンできません。」です。
テキストファイルをどこに配置したら良いのかまた、fopen()で
テキストファイルをオープンするためにプロジェクトに追加するとか、そういった設定方法がわからないのです。
一応ソースを提示したいと思います。
----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
FILE *fp;
int ninzu = 0;
char name[100];
double height,weight;
double hsum = 0.0;
double wsum = 0.0;

if( (fp=fopen("hw.dat","r")) == NULL )
{
printf("\aファイルをオープンできません。\n");
}
else
{
while(fscanf(fp,"%s%lf%lf",name,&height,&weight)==3)
{
printf("%-10s %5.1f %5.1f\n",name,height,weight);
ninzu++;
hsum += height;
wsum += weight;
}
printf("----------------------\n");
printf("平均 %5.1f %5.1f",hsum/ninzu,wsum/ninzu);
fclose(fp);
}

return EXIT_SUCCESS;
}
----------------------------------------------------------------
以上です。ご教授お願いします。

補足日時:2007/02/19 16:11
    • good
    • 0
この回答へのお礼

miraiya様へ

ご回答ありがとうございました。
今後は質問の趣旨がうまく伝わるような質問を
していきたいと思います。

お礼日時:2007/02/19 18:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!