如何在C中打印環境變量,但沒有值?只有變量。在C中打印沒有值的環境變量
int main(int argc, char **argv, char **envp)
{
while(*envp!=NULL) {
printf("%s\n", *envp);
envp++;
}
system("pause");
return 0;
}
如何在C中打印環境變量,但沒有值?只有變量。在C中打印沒有值的環境變量
int main(int argc, char **argv, char **envp)
{
while(*envp!=NULL) {
printf("%s\n", *envp);
envp++;
}
system("pause");
return 0;
}
由於環境變量的格式爲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;
}
沒問題。如果我的回答可以幫助你,那麼選擇它作爲答案,或者upvote。 –
'ptrdiff_t'是格式字符串中'*'的有效類型嗎?我會想象它會期待'int'或'size_t'。 – Lundin
說實話,我不知道 - 根據[this](https://linux.die.net/man/3/printf),它需要'int'。 –
爲什麼你就不能去掉的值,例如用'strtok',使用'='作爲分隔符? –
請注意,你不應該搞亂通過'getenv'獲得的* original *環境,尤其是不會像'strtok'那樣的東西,*會改變進程的環境*。在副本上工作,或使用較少干擾的方法。 – tofro