- ベストアンサー
ファイル処理でのファイル指定の仕方
今授業で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と書いてた部分をどのように書き直せばいいのかという事です。 たぶんかなり初心者的な質問でしょうが、よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>例えばCドライブのなかのAAAフォルダのなかのBBBフォルダ >の中に保存されていたとすれば、どのようにabc.txtを指定 c:AAA\BBB\abc.txt ですね。
その他の回答 (5)
- elmclose
- ベストアンサー率31% (353/1104)
あ、すみません。プログラムを書くときに、「\」を「\\」と書かねばならないのは、他の方が説明されている通りだと思います。
お礼
ありがとうございました。
- elmclose
- ベストアンサー率31% (353/1104)
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等で「ファイルシステム」で検索すると、関連する情報が多数ヒットします。
お礼
ありがとうございました。
- edomin
- ベストアンサー率32% (327/1003)
既に皆さんが回答されていますが、 例えば、 「BドライブのAAAフォルダの中のBBBフォルダの中のABC.TXT」 を通常のWindowsで表すと 「B:\AAA\BBB\ABC.TXT」 になります。しかし、「\」は特殊文字なので、「\」を表すためには「\\」としなければ成りません。 そのため、 「B:\\AAA\\BBB\\ABC.TXT」 のような、記述になります。
お礼
ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
"c:\\AAA\\BBB\\abc.txt" かもしれません。
お礼
ありがとうございました。
- osamuy
- ベストアンサー率42% (1231/2878)
パスの記述法は、OSおよび言語処理系に依存しますが、今回の質問から想像するに、こんな感じでは: fopen( "C:\\AAA\\BBB\\abc.txt", "w" )
お礼
ありがとうございました。
お礼
ありがとうございました。