アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語の初心者で、なにがなんだかわかりません。
ファイル入出力関数の話ですが、
フォルダ名のフルパスを指定された関数内で
ファイルポインタを指定して他関数を使用します。
そもそもフォルダ名のフルパスからファイルポインタを
得ることができるのでしょうか?

A 回答 (4件)

fopen関数ではファイル名(フルパスでもOK)からファイルポインタを返します。


araponさんがおっしゃっている「フォルダ名」とはいわゆる「ディレクトリ」のことでしょうか?
ディレクトリのことであれば、ファイルポインタは得られないと思います。
    • good
    • 0
この回答へのお礼

準備されたオープン関数にディレクトリオープンモードというものが準備されていました。
勉強になりました。ありがとうございました。

お礼日時:2004/05/07 13:25

フォルダ(ディレクトリ)に対しては、通常のファイルi/o関数(fread,fwrite,fget,fscanf,...)は使えませんが。



WindowsならFindFirstFile(),FindNextFile()とか、
linuxならopendir(),readdir()とか、
専用の物を使います。
通常のファイルと同じ処理が出来ない、意味が無いためです。

何をしたいか、使う他の関数というのはどんな関数で何をする物なのか等書いた方がいいと思いますよ。
また、OS等も明記した方がいいです。

たとえば、フォルダ内にある各ファイルに対して何かしたいとか、
フォルダの作成日付が知りたいとか。
    • good
    • 0
この回答へのお礼

準備されたオープン関数にディレクトリオープンモードというものが準備されていました。
勉強になりました。ありがとうございました。
今度質問するときはもうすこし情報を伝えるようにします。

お礼日時:2004/05/07 13:26

すみません。

大事な部分が抜けていました。

「そもそもフォルダ名のフルパスからファイルポインタを得ることができるのでしょうか?」

通常は可能です。

この回答への補足

ありがとうございます。
FILE *fopen(const char *filename, const char *mode);
のfilenameにフォルダ名を設定してファイルポインタが返りますか?

補足日時:2004/05/07 09:37
    • good
    • 0

変数へのポインタとファイルポインタと混同されてはいませんか?この二つはまったく異なるものです。

C言語で一般的にポインタと言えば前者を指しますが、ファイルポインタとはファイルアクセス時のファイル内の位置を表します。言い換えれば、前者はメモリー空間上のアドレスで、後者はファイル内のデータ位置です。変数ポインタ(メモリーアドレス)はOSや言語によってコントロールされますが、ファイルポインタ(ファイル内のデータ位置)はそのファイル仕様によって決まるものです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!