• ベストアンサー

ファイル処理でのファイル指定の仕方

今授業でC言語の勉強をしているのですが、ファイル処理の所でよく分からない箇所がでてきました。 教科書の例題のプログラムの一部なんですが、 if((fp=fopen("b:abc.txt","w"))==NULL){ printf("File not open\n"); exit(1); } というのがあり、隣に解説として「b:abc.txtはbドライブにあるabc.txtを指定」みたいなことが書かれていました。 なるほどなあと思い、実際にbドライブにabc.txtをつくってプログラムを実行させてみたところ、きちんと動作することが確認できました。 何が分からないのかというと、もし先ほどのabc.txtがどこかのフォルダ、例えばCドライブのなかのAAAフォルダのなかのBBBフォルダの中に保存されていたとすれば、どのようにabc.txtを指定すればいいのかということです。 つまり、さきほどはb:abc.txtと書いてた部分をどのように書き直せばいいのかという事です。 たぶんかなり初心者的な質問でしょうが、よろしくお願いします。

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

  • ベストアンサー
  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.1

>例えばCドライブのなかのAAAフォルダのなかのBBBフォルダ >の中に保存されていたとすれば、どのようにabc.txtを指定 c:AAA\BBB\abc.txt ですね。

secret-goo
質問者

お礼

ありがとうございました。

その他の回答 (5)

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.6

あ、すみません。プログラムを書くときに、「\」を「\\」と書かねばならないのは、他の方が説明されている通りだと思います。

secret-goo
質問者

お礼

ありがとうございました。

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.5

No.1です。補足します。 フォルダは「\」という文字で表します。これは本来は、バックスラッシュ(左上から右下への斜め線の形を持つ文字)が使われるのですが、日本語の環境では、バックスラッシュの変わりに「\」の文字が使われます。 また、 c:AAA\BBB\abc.txt という書き方は、相対パスといって、現在のディレクトリ(カレントディレクトリ)からの相対的な位置を表す表現方法です。 これに対して、絶対パスで書くならば、例えば、 c:\123456\AAA\BBB\abc.txt のように、ドライブ名を表す「c:」の次に「\」を付けます。単に「c:\」と書けば、Cドライブの最も根っこのディレクトリ(ルートディレクトリ)を表します。 仮に、現在のディレクトリが c:\123456 であるときに、相対パスで AAA\BBB\abc.txt あるいは c:AAA\BBB\abc.txt と書くと、 c:\123456\AAA\BBB\abc.txt を表します。 現在のディレクトリが c:\ であるときに、相対パスで AAA\BBB\abc.txt あるいは c:AAA\BBB\abc.txt と書くと、 c:\AAA\BBB\abc.txt を表します。 なお、MS社のWindows系のOSでは、ファイル名等において、アルファベットの大文字と小文字(例えば、Aとa)は区別されませんが、OSによってはこれが区別される(つまり、abc.txtとABC.txtとは別のファイル)こともありますので、これも知っておかれると良いと思います。 なお、Google等で「ファイルシステム」で検索すると、関連する情報が多数ヒットします。

secret-goo
質問者

お礼

ありがとうございました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.4

既に皆さんが回答されていますが、 例えば、 「BドライブのAAAフォルダの中のBBBフォルダの中のABC.TXT」 を通常のWindowsで表すと 「B:\AAA\BBB\ABC.TXT」 になります。しかし、「\」は特殊文字なので、「\」を表すためには「\\」としなければ成りません。 そのため、 「B:\\AAA\\BBB\\ABC.TXT」 のような、記述になります。

secret-goo
質問者

お礼

ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

"c:\\AAA\\BBB\\abc.txt" かもしれません。

secret-goo
質問者

お礼

ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

パスの記述法は、OSおよび言語処理系に依存しますが、今回の質問から想像するに、こんな感じでは: fopen( "C:\\AAA\\BBB\\abc.txt", "w" )

参考URL:
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-19.html#19.17
secret-goo
質問者

お礼

ありがとうございました。