• ベストアンサー

テキストファイルを読み込んでくれません。

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#26650
noname#26650
回答No.4

Ans No.1の者です。 >テキストファイルをどこに配置したら良いのかまた、fopen()で >テキストファイルをオープンするためにプロジェクトに追加するとか、そういった設定方法がわからないのです。 扱いたいファイルをどこに置くかは自由です。 置いた場所を、プログラムで正しく指定すればよいのです。 また、プロジェクトとは特に関係なくて、追加などの操作を行なう必要はないはずです。 >if( (fp=fopen("hw.dat","r")) == NULL ) このコードの場合、実行ファイル(exeファイル)が 存在するフォルダと同じところにhw.datがあればよいです。

takeshix100
質問者

お礼

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

takeshix100
質問者

補足

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

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.6

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

takeshix100
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.5

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

takeshix100
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

fileがオープンできないときのエラーコードはなんですか? errno グローバル定数をチェックしてみてくださいな。

takeshix100
質問者

お礼

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

takeshix100
質問者

補足

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

すると、全ての回答が全文表示されます。
noname#39970
noname#39970
回答No.2

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

takeshix100
質問者

お礼

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

takeshix100
質問者

補足

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

すると、全ての回答が全文表示されます。
noname#26650
noname#26650
回答No.1

>fopen()関数に指定したテキストファイルを読み込んでくれません。 どんなコードを書いて、どんな風になったので 「読み込んでくれない」と判断されましたか? まずはコードを見せてください。 また、何かエラーが出たのでしたら、 そのときのメッセージを提示してください。

takeshix100
質問者

お礼

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

takeshix100
質問者

補足

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; } ---------------------------------------------------------------- 以上です。ご教授お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A