• ベストアンサー

ディレクトリの作り方について

初心者の者です。 プログラムでディレクトリ(フォルダ)の作り方をご存知の方教えてください。 fopen("data/○○.dat", "w")で、 dataというディレクトリ(フォルダ)の中に○○.datというファイルを 作ることができるという事は分かったのですが、この方法では あらかじめdataというディレクトリを作らなければなりません。 プログラムを実行させるときにディレクトリを作り、その中にファイルを 作るにはどのようにすればよいでしょうか? また、動作環境はWindowsとUNIXの両方で使いたいのですが, 使い分けなければならないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shinjif
  • ベストアンサー率33% (30/90)
回答No.1

mkdir(path, mode) という関数が用意されているはずです。 これはUnix/WIndows双方で利用可能なものです。 pathには作成したいディレクトリのフルパスを指定します。 modeはアクセス権限の指定です。 Windowsの場合はVC++のヘルプドキュメントのランタイムライブラリリファレンスを参照すれば載っているはずです。

__sourin__
質問者

お礼

どうもありがとうございました。 おかげさまで解決することができました。 また分からない事があると思いますので、 その時はまたよろしくお願いします。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> また、動作環境はWindowsとUNIXの両方で使いたいのですが, > 使い分けなければならないのでしょうか? 先に回答された通り mkdir() は、Windows でも unix でも用意はされている のですが、プロトタイプを宣言しているヘッダファイルが違います。 ソースを共通にするのであれば、定義済みマクロを使います。例えば、 #ifdef unix #include <sys/stat.h> #else /* Windows */ #include <direct.h> #endif という感じ。たぶん、unix という定義済みマクロは、どの unix でも 通じると思うのですが、一応確認を。また、それぞれのヘッダファイルも 念の為に確認した方が良いと思います。

__sourin__
質問者

お礼

細やかなアドバイスどうもありがとうございます。 とても参考になりました。 また質問することがあると思いますが、 その時はよろしくお願いします。

関連するQ&A

  • Cronでのカレントディレクトリについて

    3日前からVine Linuxを初めてインストールしまして、 自宅サーバをやろうとしている、初心者です。 これまではxrea.comのレンタルスペースを借りてphpでコンテンツを作っていました。 phpをCronを使って、定期的実行する際に [シェルファイル] #!/bin/sh #PHP /usr/bin/php /var/www/html/filename.php exit のようにしてファイル操作をするphpを実行させたのですが [filename.php] <?php $fp=fopen("../data/dat.txt","w"); fputs($fp,$data); fclose($fp); ?> で実行したところURLからは問題なく dat.txt の内容を編集することができるのですが cronからだと PHP Warning: fopen(../data/data.txt): failed to open stream: No such file or directory となります。 そこでカレントディレクトリを調べると /root/PHPs/ となっていたので、そのようなエラーになっていました (1)カレントディレクトリを変更するコードを毎回phpに組み込む (2)フルパスでファイルを指定する ことでこのトラブルは回避されるのですが、 xrea.comでは、相対パス、カレントディレクトリを毎回指定しなくても、実行できていました。 cronでphpを実行する際に、phpが存在するディレクトリへ 自動でカレントディレクトリを移動するようにしたいです。 そのような方法があれば、教えてくください。

  • ショートカットで起動した場合のカレントディレクトリ

    実行ファイルのあるディレクトリに結果を出力するCで書いたプログラムがあります。 この実行ファイルのショートカットを作り、それを起動したところ、結果が手元ではなく、実行ファイルのあるディレクトリに作成されてしまい困っています。 ショートカットをおいたディレクトリに出力するようにするにはどうやったらよいのでしょうか? 実行ファイルのソースリストはありますので、実行ファイルの修正も可能です。 ソースリストを見たところ、結果を出力するファイルは、  fp = fopen("temp.txt", "w"); でファイルをオープンしていました。 なお、実行環境は、WinXPです。 よろしくお願いします。

  • ディレクトリ内のファイル検索

    ディレクトリから複数のテキストファイルを取り出して、複数のデータ(文字列ですね)をとりこんで、変数に格納する方法を知りたいです。 できれば、WIN、UNIX両方で動くようなものをつくりたいのですが、どうすればいいでしょうか?

  • ディレクトリについて

    Cをはじめたばかりの初心者です。 ディレクトリについてわからないことがあります。 まずコマンドプロンプト上でbofileというディレクトリを作ってその中にさらにmenu01というディレクトリをつくろうと思い C:\bofile>md \menu01 C:\bofile>cd \menu01 C:\menu01 とやっていったのですがmenu01フォルダは,なぜかbofileディレクトリの外にできてしまいます。とりあえず無視してbofileのなかにmenu01というプログラムを作ってそのあとmenu01フォルダをbofileに移して作ったプログラムをそのmenu01フォルダに移動させて コマンドプロンプト上で C: \bofile>cd \menu01 のようにやったのですが、 The system cannot find the path spedified. と表示されてしまいます。 menu01プログラムはbofileに裸でおいといたときはエラーもなくきちんと起動しました。しかしmenu01フォルダにいれてからは 上記のメッセージが出てしまい、どうしようもありません。説明に不足があれば、また足しますので、どうかよろしくお願いします。

  • ディレクトリの作成

    今自作プログラムをつくっている大学生です。 C++で、ファイルの作成、ファイルからの書き込み、読み込みは、ifstream,ofstreamを使ってできるのですが、UNIXで、プログラム内での操作で新しいディレクトリを作りたいと思っているのですが、どうやったらいいかわかりません。 知っている方がいたら、書式等なるべく詳しく教えて下さい。よろしくお願いします。

  • PHPでWindowsのローカルドライブに書き込みたい

    PHP初心者ですが、PHPのファイル操作で質問があります。 サーバー上にあるファイルをWindowsのクライアントのフォルダに保存したいのですが、サーバーの作業ディレクトリに保存されてしまいます。 以下のようなテストプログラムで実験しています。(エラー処理は省略) $server_file_data=file_get_contents('server.dat'); $local_file = 'd:\\temp\\local.dat'; $cfp = fopen($local_file, "wb"); fwrite($cfp,$server_file_data); fclose($cfp); このPHPを走らせるとサーバーのカレントフォルダ上に d:\temp\local.datが作成されます。 Windows用のパスまでがファイル名に入っちゃってます。 ローカルのドライブにPHPが書き込むという動作がセキュリティ上望ましくないことは理解していますが、ここでは技術的な解決策をどなたかご教授できるでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • /binディレクトリを見たい

    Linux(Ubuntu)を使いはじめた者です。 入門書に、 コマンドの実体はプログラムとしてファイルが存在する。例えば、「echo」コマンド/binディレクトリの中にファイルとして存在する。 とあり、GUIでそのディレクトリを見たいなと思ったのですが、たどり方がよく分かりませんでした。GUIで見てみたいのですが、どうやればよいでしょうか?

  • 相対パスの指定

    FindFirstFile(), remove(), OPENFILENAME などのファイルやフォルダのパスを扱うものについて、例えば 実行ファイルと同じディレクトリに有るdat.datというファイルを「dat.dat」とだけ書いて相対指定したつもりが、実行ファイルと同じディレクトリにdat.datが無かった場合にWindowsフォルダなどの特殊なフォルダや、AUTOEXEC.BATに書いてあるフォルダを使ってdat.datが検索されて適用されたりすることはあるのでしょうか? いろいろな関数や構造体が有りますが、相対パスが指定されたとき、絶対パスを作るために使用されるフォルダパスが、GetCurrentDirectory()以外のものが使われることってあるんでしょうか?

  • フォルダ(ディレクトリ)の一覧をプリントできますか

    フォルダ(ディレクトリ)の一覧を プリントしたいと思っています。 コマンドプロンプトで dir /s /b > aaa.txt を実行すると フォルダ(ディレクトリ)とその中のファイル名が aaa.txtに入ってしまいました。 フォルダ(ディレクトリ)のみ ファイルにいれるか プリントする方法があったら 教えてください。 よろしくお願いします。

  • カレントディレクトリにあるExcelファイルを全て開く

    Excelのマクロ機能などを利用してカレントディレクトリ(というかマクロを実行するファイルが格納されたフォルダ)内のその他のExcelファイルを全て開かせるにはどうすればよいでしょうか?フォルダ名の指定はせず、実行するファイルを移動しても動作するようにしたいです。