fileの読み書きにつかうfopen();のファイルパスの指定方法について質問です。
ネットワーク上にあるファイルに書き込みをしたいと考えているのですが、
(仮にhttp://.../test.cにあるとします。)
このtest.cを読み込みたい場合、
fopen(http://.../test.c);
としても上手くいきませんでした。
fopen();ではネットワーク上のファイルの読み書きはできないのでしょうか?
よろしくお願い致します。
× fopen(http://.../test.c);
○ fopen(http://.../test.c, r);
の間違いでした。失礼しました。
> fopen();ではネットワーク上のファイルの読み書きはできないのでしょうか?
ファイル共有によるものならば読み書きできますが、http は無理です。
わかりました。
確かにhttpはブラウザ表示しているだけで実際そこにファイルがあるわけではないです
よね…。
ありがとうございました。
実際そこにファイルがあるかどうかは無関係です。
ブラウザだって、実際存在するファイルを表示する場合もあれば、ファイルとして存在し
ていないデータを表示する場合もあります。
この問題の原因はそこではなくて、Windows においては fopen が間接的に呼び出してい
る Windows API である CreateFile が、パスとして http://~ を受け付けるようにでき
ていないという点にあります。
それは Windows の事情ですから、C の言語規格としては、fopen に URI を渡すことを特
に禁止してはいないと思います。
許容する処理系があってもいいんじゃないでしょうか。望みは薄いですが。
解決済みになっていますが、URLで指定されるファイルを読み出すのであれば、
WinInetライブラリを使用する方法はどうですか。
関数名だけ挙げると次の流れになります。
InternetOpen()
InternetOpenUrl()
InternetReadFile()
InternetCloseHandle()
InternetCloseHandle()
詳しくは検索で・・・