- ベストアンサー
フォルダ名のフルパスからファイルポインタ
C言語の初心者で、なにがなんだかわかりません。 ファイル入出力関数の話ですが、 フォルダ名のフルパスを指定された関数内で ファイルポインタを指定して他関数を使用します。 そもそもフォルダ名のフルパスからファイルポインタを 得ることができるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
fopen関数ではファイル名(フルパスでもOK)からファイルポインタを返します。 araponさんがおっしゃっている「フォルダ名」とはいわゆる「ディレクトリ」のことでしょうか? ディレクトリのことであれば、ファイルポインタは得られないと思います。
その他の回答 (3)
- terra5
- ベストアンサー率34% (574/1662)
フォルダ(ディレクトリ)に対しては、通常のファイルi/o関数(fread,fwrite,fget,fscanf,...)は使えませんが。 WindowsならFindFirstFile(),FindNextFile()とか、 linuxならopendir(),readdir()とか、 専用の物を使います。 通常のファイルと同じ処理が出来ない、意味が無いためです。 何をしたいか、使う他の関数というのはどんな関数で何をする物なのか等書いた方がいいと思いますよ。 また、OS等も明記した方がいいです。 たとえば、フォルダ内にある各ファイルに対して何かしたいとか、 フォルダの作成日付が知りたいとか。
お礼
準備されたオープン関数にディレクトリオープンモードというものが準備されていました。 勉強になりました。ありがとうございました。 今度質問するときはもうすこし情報を伝えるようにします。
- pacifist
- ベストアンサー率40% (4/10)
すみません。大事な部分が抜けていました。 「そもそもフォルダ名のフルパスからファイルポインタを得ることができるのでしょうか?」 通常は可能です。
補足
ありがとうございます。 FILE *fopen(const char *filename, const char *mode); のfilenameにフォルダ名を設定してファイルポインタが返りますか?
- pacifist
- ベストアンサー率40% (4/10)
変数へのポインタとファイルポインタと混同されてはいませんか?この二つはまったく異なるものです。C言語で一般的にポインタと言えば前者を指しますが、ファイルポインタとはファイルアクセス時のファイル内の位置を表します。言い換えれば、前者はメモリー空間上のアドレスで、後者はファイル内のデータ位置です。変数ポインタ(メモリーアドレス)はOSや言語によってコントロールされますが、ファイルポインタ(ファイル内のデータ位置)はそのファイル仕様によって決まるものです。
お礼
準備されたオープン関数にディレクトリオープンモードというものが準備されていました。 勉強になりました。ありがとうございました。