如何在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