2016-09-30 4 views
0

Cで環境変数を印刷するにはどうすればいいですか?変数のみ。Cで環境変数を使用せずに印刷

int main(int argc, char **argv, char **envp) 
{ 
    while(*envp!=NULL) { 
     printf("%s\n", *envp); 
     envp++; 
    } 
    system("pause"); 
    return 0; 
} 
+1

なぜあなただ​​けの値を取り除くことができない、例えば'strtok'で' = 'をデリミタとして使用していますか? –

+1

特に 'strtok'のようなものではなく、' getenv'を介して取得した*元の*環境を使いこなすべきではないことに注意してください。コピーを作成するか、より邪魔にならない方法を使用します。 – tofro

答えて

1

環境変数の形式は、NAME=valueです。だから、あなたは最初の=サインを探して、それだけをプリントして名前だけを得ることができます。

+0

最終コードはどのように見えるでしょうか? – Henrix

+0

多くの方法で検索(および印刷)ができます。ここに1つです:http://ideone.com/LedegN – usr

2

環境変数の形式はNAME=valueなので、最大文字数は=文字までにする必要があります。

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

int main(int argc, char **argv, char **envp) 
{ 
    while(*envp!=NULL) { 
     char * len = strchr(*envp, '='); 

     if (len == NULL) 
      printf("%s\n", *envp); 
     else 
      printf("%.*s\n", len - *envp, *envp); 

     envp++; 
    } 
    system("pause"); 
    return 0; 
} 

Ideone

+0

問題ありません。私の答えがあなたを助けたら、それを答え、またはupvoteとして選択してください。 –

+0

'ptrdiff_t'は書式文字列の' * 'に対して有効な型ですか?私はそれが 'int'か' size_t'を期待していると思います。 – Lundin

+0

正直なところ、私は分かりません - [this](https://linux.die.net/man/3/printf)によると、 'int'が必要です。 –

関連する問題