• ベストアンサー

c言語で自分のホームディレクトリ名を知るには

c言語中で自分のホームディレクトリを知る関すうってありますか?もしくはやり方

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

  • ベストアンサー
  • jikenjp
  • ベストアンサー率38% (5/13)
回答No.2

Linux/UNIX じゃったら、 #include <stdio.h> #include <stdlib.h> main(){  char home[128];    /* ホーム */  char pwd[128];    /* カレント */  strcpy(home, getenv("HOME"));  strcpy(pwd, getenv("PWD")); } (環境変数は、env で要確認!!、 <stdlib.h> ないと、エラーになることありまする。)

taurus4_ikeda
質問者

お礼

初心者の私には一番分かりやすかったです。ありが当座いました。

その他の回答 (2)

回答No.3

以下、UNIX系OSとして答えます。(他のOSではホームディレクトリという概念そのものがない場合がありますが、もしかすると何らかの方法で同じ関数を用意しているかも知れませんので調べてみて下さい)。 何らかの事情で No.1 の方が答えられている方法が使えない場合も想定して作りたい場合は以下の方法で分かると思います。 1. getuid() で現在のプロセスの実ユーザIDを取得する。 2. 取得したユーザIDを使って getpwuid() でパスワードフィールドを取得する。 3. 取得したパスワードフィールドの構造体の中の pw_dir のフィールドがホームディレクトリ。 p.s. 環境変数 HOME を使う場合は getenv() 関数を使った方が探す手間が省けます。

taurus4_ikeda
質問者

お礼

ありがとう御座います、勉強になりました。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

mainの第3引数(普通はenvpという仮引数名にする)に環境変数の一覧が入るので、HOME という環境変数の値を切り出してくればよいです。

taurus4_ikeda
質問者

お礼

ありがとうございます。ちょっとまだ使い方が分からないのですが、勉強します。

関連するQ&A

  • C言語でのディレクトリ作成についての質問です。

    C言語でのディレクトリ作成についての質問です。 Linuxコマンドのmkdir -pコマンドのようなことをC言語で実現したいのですが、 mkdir(dir1/dir2)のようにすると、エラーになってしまいます。 mkdir(dir1)のように階層でないディレクトリを指定した場合はうまくいくのですが・・・ mkdir関数では階層ディレクトリを1度で作成できないのでしょうか。 ディレクトリをたどってmkdirを1回ずつ使用しなければいけないのか、 階層ディレクトリを指定できる関数がほかにあるのか、 ご教授お願いいたします。

  • C言語でのディレクトリの読み込みについて

    C言語でのディレクトリの読み込みについて 現在C言語を勉強中のものです。 質問なのですが、あるフォルダ内にある複数の画像(仮にファイル名:car_001,car_002....など)を順に読み込んで、繰り返し処理をするプログラムを作りたいと思っています。 というのも、現在一般物体認識という分野を勉強していまして、 http://d.hatena.ne.jp/aidiary/20100227/1267277731 のページの中段にあるような処理をしたいと思っているからです。 現在Windowsで、VisualC++2008を使用しているのですが、調べてみても決定的に参考となるようなページが見つからず困っています。 どなたかご解説していただけると助かります。ぜひよろしくお願いします。

  • ホームというディレクトリに移るとき

    ホームというディレクトリに移るとき、どうしても移れません。 どなたかどんなパスを書くのか教えてください。 ご多忙中申し訳ありません。 ご回答のほど宜しくお願い申し上げます。 root@GD348ZZD9:~# cd ホーム/eclipse/java-neon -bash: cd: ホーム/eclipse/java-neon: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd /ホーム/eclipse/java-neon -bash: cd: /ホーム/eclipse/java-neon: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd /eclipse/java-neon -bash: cd: /eclipse/java-neon: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ./ホーム/eclipse/java-neon -bash: cd: ./ホーム/eclipse/java-neon: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ./eclipse/java-neon -bash: cd: ./eclipse/java-neon: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ./ホーム/ -bash: cd: ./ホーム/: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ./ホーム -bash: cd: ./ホーム: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ../ホーム -bash: cd: ../ホーム: そのようなファイルやディレクトリはありません root@GD348ZZD9:~# cd ..ホーム -bash: cd: ..ホーム: そのようなファイルやディレクトリはありません

  • C言語でコマンドラインのカレントディレクトリの移動

    C言語でコマンドラインのカレントディレクトリを移動するということは可能でしょうか? ちなみに、 system("cd C:\\"); としてみても、ルートディレクトリに移動したりはしてくれませんでした。

  • ホームディレクトリの場所が変わった

    これまではホームディレクトリ内にデスクトップフォルダがあったのですが、色々を作業をしてたら突然デスクトップフォルダ内にホームディレクトリが入っている状態になりました。 どうやったら元に戻りますか? 画像の赤の線がホームディレクトリ(ユーザー名)です。Windows Vistaを使っています。

  • ホームディレクトリについて

    ODNのHP公開代理のCGIサービスを使って、自分のHPにアンケートフォームを使ったページを作成しました。メールテストをしたところ、フォームのCGI自体はちゃんと動作しているのですが、「送信」を押したあと、自分で用意したenquete.out.htmlのページに飛べません。「enquete.out.htmlを必ずホームディレクトリにおいてください」とのことらしいのですが、ホームディレクトリの正確な定義とログインの仕方がわかりません。あっぷろーどはFFFTPを使っています。 とても初歩的な質問で申し訳ないのですが、この壁に突き当たってもう1週間以上になり、本やネットを調べまくったのですが、どうしても解決出来ず、どなたかから助言いただければと思い、書き込みさせていただきました。なるべく、詳しい解説をいただければなおうれしいです。よろしくおねがいいたします。m(_ _)m

    • ベストアンサー
    • CGI
  • C言語について

    全くの初心者ですが、C言語というものを勉強したくて…「ずばりわかるC言語」と言う本を買いました。 本の説明の通りに進めているつもりなのですが…ディレクトリc:\borland\bcc55\Binがどこにあるのかわかりません…。 ※cpフォルダーは必ずcドライブの直下に作って下さい。 の直下の意味もよくわからないのですが…。 なにぶん全くの初心者なので、なるべく専門用語ではない言葉で詳しく説明して頂けると助かります。※CP用語辞典というものも購入したので、少しはわかりますが…。 何卒宜しくお願い致します。

  • C言語はC言語でできている?

    C言語はC言語でできている? C言語はC言語でできていると耳にしたことがあります。 一体どういうことですか? 詳しく教えて下さい。

  • C言語について

    パソコン系の就職に就きたく、C言語について勉強したいと思い、 本を買い勉強することにしました。 しかし、最初の初歩でつまずいてしまいました。 プログラムがコンパイル出来ないのです… ソースファイルを保存したディレクトリに移動してとかいてあるのですが何を移動するのでしょうか? コマンドプロントを使えません。 助けてください…

  • IISのホームディレクトリについて

    IISのホームディレクトリの下に、フォルダを作成して、ログファイルを入れようと したところ、読み取り専用でログファイルが作成されませんでした。 手動で読み取り専用を外しても、自動的に読み取り専用になってしまいます。 IISのホームディレクトリは、セキュリティ上、読み取り専用なのでしょうか? 又は、ログファイルを作成するフォルダのみ、読取専用を外す方法があるのでしょうか? そもそも、ホームディレクトリの中にログファイルを入れるフォルダを作成すること自体が 間違いなのでしょうか? よろしくお願いします。