首页 > 编程语言 >C/C++开发者必备 如何获取系统环境变量的方法

C/C++开发者必备 如何获取系统环境变量的方法

时间:2023-08-10 14:13:16浏览次数:32  
标签:main int envp C++ char 开发者 include 环境变量

获取系统环境变量在C/C++中是一项简单的任务。

下面展示了一个纯C语言实现的方法。

```c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char* pathVar;
pathVar = getenv("PATH");
printf("pathVar=%s", pathVar);
return 0;
}
```

需要注意的是,`getenv()` 函数定义在 `stdlib.h` 中,如果在C++中使用,可以通过 `#include <cstdlib>` 并使用 `std::getenv()` 函数。为了考虑可移植性,这两种方法都是首选。

在Windows环境下,我们还可以使用 `WINAPI GetEnvironmentVariable()` 函数来获取特定环境变量的值。

另外,还有两种方式可以列出当前设置的所有环境变量的值。

如果你希望成为一名程序员,我鼓励你加入我们。学习从来不是孤单的过程,不论你的基础如何,学习C/C++都需要团结一心。无论是出于兴趣还是为了入门、转行学习C/C++,我们都可以一起进步。每晚,我们都会有资深专家进行技术讲解。快来加入志同道合的伙伴,一起努力学习,共同成长吧!我们的C/C++编程学习群。这里提供学习资料、视频教程等资源。

代码示例中展示了一个C语言程序,用于打印环境变量。

```c
// Original Code
#include <stdio.h>
int main(int argc, char **argv, char **envp) {
char **env;
for (env = envp; *env != 0; env++) {
char *thisEnv = *env;
printf("%s\n", thisEnv);
}
}
// Modified Code
#include <stdio.h>
int main(int argc, char **argv, char **envp) {
char **environment;
for (environment = envp; *environment != 0; environment++) {
char *currentEnv = *environment;
printf("%s\n", currentEnv);
}
}
```

备注:这里需要强调的是,关于envp,若要考虑程序的可携带性,最好不使用envp作为main函数的第三个参数。

这是一种常见于Unix系列系统的扩展功能。envp是一个以null结尾的字符串数组,在Microsoft C++中也能使用。如果你使用的是wmain,可以用wchar_t代替char来表示。

尽管这是一个常见的扩展功能,但并非所有系统都支持此扩展。因此,在考虑程序的可携带性时,最好不要使用它。

根据C99标准,只有两种合法的main函数定义:

a) int main(void)

b) int main(int argc, char **argv)或等效形式

它允许实现定义其他格式(其中可能会允许第三个参数)

c) 或以其他一些实现定义的方式。

 

extern char **environ

#include #include externchar**environ;intmain(intargc,char*argv[])
{
char**p = environ;
while(*p != NULL)
{
printf("%s (%p)\n", *p, *p);
*p++;
}
return0;
}

一样需要说的是,extern char **environ.在Posix中是在中声明的。

它也是unixsm的,并且在windows中是没有定义的,所以在实践中,考虑最好还是要使用getenv()函数来取得相关的环境变量。

 

标签:main,int,envp,C++,char,开发者,include,环境变量
From: https://www.cnblogs.com/2467118965z/p/17620176.html

相关文章

  • 我的第一篇博客--C++课程设计
    目录前言一、题目1.数位之和2.数字排序3.字符串匹配二、问题分析1.数位之和2.数字排序3.字符串匹配三、具体代码1.数位之和2.数字排序3.字符串匹配总结前言这是我的第一篇博客,内容便是最近所做的课程设计,之后也会每天和大家分享一下刷题笔记,以及AC后的代码,希望大家的批评指正,分享大......
  • 【Linux】进程优先级 | 进程的切换 | 环境变量详解
      ......
  • C++ 多态深入解析
    @TOC前言在C++编程中,多态性(Polymorphism)是一种重要的概念,它允许基于对象的实际类型来调用不同的函数。多态性提供了灵活性和可扩展性,使得代码更易于维护和扩展。一、什么是多态多态性的定义:多态性是一种面向对象编程的特性,它允许使用基类的指针或引用来调用派生类对象的特定成员函......
  • C++11新特性
    1.auto2.&&3.初始化列表vector<int>vec{1,2,3,4,5};4.范围for5.Lambda6.nullptr7.智能指针shared_ptrunique_ptrweak_ptr......
  • C++流
    C++中流的概念在程序设计中,数据输入输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作时通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。C++中的......
  • HBuilderX的小程序项目无法预览到微信小程序开发者工具上
    1、打开微信小程序开发者工具---》设置----》 2、打开HBuilderX配置开发者工具地址  3、 ......
  • C++/嵌入式八股学习-day2
    C++/嵌入式八股学习-day2C/C++手写atoi函数功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。C++有哪几种构造函数ARMARMCPU上的地址转换......
  • TooKit助力开发者上云
    本文分享自华为云社区《华为云Classroom赋能—TooKit助力开发者上云》,作者:华为云PaaS服务小智。对于资深程序员而言,IDE是必不可少的,它好比是剑客手中的宝剑,IDE帮助程序员更快更丝滑的去编程,同时插件就是这把剑上的各种Buff,为宝剑赋能,提供更好的升级打怪体验。什么是HuaweiClou......
  • c++中template的用法是什么?
    下文由ChatGPT生成在C++中,template是一种通用编程工具,用于创建通用的函数或类。通过使用模板,可以编写可以应用于不同数据类型的函数或类,从而实现代码的重用性和灵活性。template的使用方法如下:1.函数模板(FunctionTemplates)函数模板允许定义一个通用的函数,可以在不同数据类......
  • C++ vector 容器浅析
    C++vector容器浅析一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺......