5

を使用してユーザーのホーム ディレクトリを取得しようとしていますgetenv("$HOME")が、NULL が返されます。私は何を間違っていますか?

int main(void)
{
    char * path;
    path = getenv("$HOME");
    printf ("The current path is: %s",path);

    return 0;
}
4

5 に答える 5

6

$環境変数名はオフのままにします。シェルで使用される場合、$は名前の一部ではありませんが、変数名が続き、その値を置き換える必要があることをシェルに通知します。

于 2013-01-18T18:55:29.293 に答える
4
getenv("PATH"); // This is what you really want

そして、オプションで、コンパイルして-Wall、このような結果になります。(テスト済み...)

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char *path;
  path = getenv("PATH");
  if(path)
    printf("The current path is: %s\n", path);
  return 0;
}
于 2013-01-18T18:54:18.480 に答える
2

そうではないgetenv("PATH")でしょうか?

于 2013-01-18T18:54:58.940 に答える
1

ホームディレクトリには、次を使用できます

char* homedir = getenv("HOME");

またはあなたが使用することができます

char* homedir = NULL;
struct passwd *pw = getpwuid(getuid());
if (pw)
   homedir = pw->pw_dir;

PATH使用によるexecvp使用のためにgetenv("PATH")

于 2013-01-18T19:53:23.597 に答える