C言語関係掲示板

過去ログ

No.107.パス区切りの\\


No.597

ファイルの入出力での「¥」についてなのですが・・・
投稿者---博敏(2001/11/26 21:42:40)


はじめまして。C言語学習も後半になってきて、ちょっとわかりずらい点があり
伺おうと思い、書かさせていただきました。よろしくお願い致します。
ファイルの入出力でファイルの指定をするときに、「c:\\work\abc.txt」と
「c:\work\abc.txt」の違いがわからず悩んでいます。「\\」でエラーがでる
時もあれば、でない時もあるのです。これは、OSの種類とも関連するの
でしょうか? よく書籍等でも、「\\」と書いてあるのですが、実際にはエラー
が出ることもあるので、どのように考えればよいかと思っています。
ソフトは「VC++」を使っています。どうぞよろしくお願い致します。




No.598

Re:ファイルの入出力での「¥」についてなのですが・・・
投稿者---kikk(2001/11/27 00:08:50)


ども。


基本的に"\\"です。WindowsやDOSのパス区切り記号は\(円記号, バックスラッシュ)
であり、文字列中ではエスケープする必要があるので"\\"になります。
「エスケープシーケンス」を調べてみてください。


>ファイルの入出力でファイルの指定をするときに、「c:\\work\abc.txt」と

これは「c:\\work\\abc.txt」の打ち間違い(写し間違い)、でしょう。たぶん。。


うまくいったりいかなかったり、というのは、どういうときには問題無くて、
どういうときにはどういうエラーがでるのかがわからないので何ともいえません。


なお、ファイル指定文字列の解釈は処理系依存なので、"\\"でなくて"\"でも、
もしかしたらライブラリ関数が気を利かせて、意図したとおりに解釈してくれる
かもしれません。でも、基本的に"\\"です。

ついでに言うと、Win/DOSでのライブラリ関数のパス指定に、UNIXのパス区切り
記号である、"/"が使えてしまうこともあります。

いろいろ(といっても3種類ですが)調べて試してみてください。


処理系依存な部分(パス区切り記号)を切り分けたい場合は
#define PATH_SEP "\\"
とかするといいかもしれません。
# で、「"work" PATH_SEP "foo.txt"」というように使う


では。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.01.11
Copyright(c) 2000-2002 TOMOJI All Rights Reserved