• ベストアンサー

ファイルオープン&ファイルクローズ

 C言語でデータの種類ごとにディレクトリーを用意し、データを振り分けたいのですが。。  fopenすると同じディレクトリーでしかファイルを呼び出したり、保存したりしかできないですよね。ちがうディレクトリーのファイルの呼び出し、ファイルの保存は出来ないでしょうか?また、ディレクトリーの作成なんてことは、C言語ではできないでしょうか?  誰か知っている人がいましたら、よろしくお願いします。

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

  • ベストアンサー
  • sueoka
  • ベストアンサー率38% (24/62)
回答No.1

ディレクトリの作成は「_mkdir」と言う関数が用意されています。 Cのヘルプで「_mkdir」をキーワードに検索してみて下さい。 fopenは同じディレクトリでしか操作できない ・・・と言うのがちょっと分からないんですが、 fopen("dir1\\file.txt", "w")とすれば、 exeファイルと同じディレクトリに存在する「dir1」フォルダの中に 「file.txt」と言う名前のファイルを作成します。 また、fopen("../data.dat", "w")とすれば、 exeファイルの一つ上のディレクトリに 「data.dat」と言う名前のファイルを作成します。 もちろん、絶対パスを使う事も出来ます。 例)fopen("C:\\dir1\\dir2\\sample.ini", "w") 質問の回答になっているかどうか分かりませんが、 こんなのでどうでしょう?

Nickee
質問者

お礼

>また、fopen("../data.dat", "w")とすれば、 exeファイルの一つ上のディレクトリに 「data.dat」と言う名前のファイルを作成します。 もちろん、絶対パスを使う事も出来ます。 例)fopen("C:\\dir1\\dir2\\sample.ini", "w") こういう使い方を知らなかったので。。 非常に助かります。ありがとうございました。

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

その他の回答 (1)

  • ahsblue
  • ベストアンサー率58% (23/39)
回答No.2

sueokaさんの回答のとおりですが、一応、UNIX版だと以下のとおりです。 「ディレクトリ作成」 mkdir("作りたいディレクトリ名"); 「ファイルオープン」 FILE fp; fp = fopen("ファイル名","r"); /* 読み込みの場合 */ 質問内容を見ますと、絶対パス、相対パスをよく理解されていないのでは?と思いました。念のため書いておきます。 ●絶対パス:ディレクトリの先頭(UNIXならルート、Windowsならドライブ)から最後まで全部書く方法 ●相対パス:実行ファイルと同じディレクトリを基準にする方法(正確にはカレントディレクトリを基準にします。カレントは変更可能)。1つ上のディレクトリを示すには、 ../ と書きます。 例)実行ファイルの1つ上のabcというディレクトリのdef.txtを追加モードでオープンする。 fp = fopen("../abc/def.txt","a"); 補足は以上です。がんばってください!

Nickee
質問者

お礼

 >fp = fopen("ファイル名","r"); /* 読み込みの場合 */ ファイル名のところは、ファイル名しか入れられないのかと思っていたので、 >fp = fopen("../abc/def.txt","a"); このような使い方ができるとは知りませんでした。 ありがとうございました。ポイントはどちらにも、多くやりたいのですが、そうもいかないので、早いもの順ってことで。ありがとうございました。

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