main函数的参数及环境变量操作

news2025/1/21 13:07:58

main函数的参数及环境变量操作

    • 1. main 函数的参数
      • 参数解释:
      • 示例:通过 argv 获取命令行参数
    • 2. 操作环境变量
      • 2.1 设置环境变量:setenv
      • 示例:设置环境变量
      • 2.2 获取环境变量:getenv
      • 示例:获取环境变量

在C语言中,main 函数是程序的入口点。了解 main 函数的参数及其操作环境变量的方法,对于开发高效、可移植的程序至关重要。本文将介绍如何使用 argcargvenvp 参数,如何操作环境变量,包括设置和获取环境变量的基本方法。

1. main 函数的参数

main 函数通常有三个参数:argcargvenvp,它们的标准写法如下:

int main(int argc, char *argv[], char *envp[]) {
    return 0;
}

参数解释:

  • argc:存储程序参数的个数,包括程序本身。
  • argv:一个字符串数组,存储每个参数的值,包括程序本身。
  • envp:一个字符串数组,存储环境变量,数组的最后一个元素是空指针。

示例:通过 argv 获取命令行参数

#include <stdio.h>

int main(int argc, char *argv[], char *envp[]) {
    printf("程序名: %s\n", argv[0]); // 输出程序名
    if (argc > 1) {
        printf("传递给程序的参数: %s\n", argv[1]); // 输出第一个参数
    }
    return 0;
}

运行该程序时,假设传入参数为 ./program hello,则输出结果为:

程序名: ./program
传递给程序的参数: hello

2. 操作环境变量

在C语言中,可以使用 setenvgetenv 函数来操作环境变量。环境变量存储了程序运行时的配置信息,它们在程序中可用于修改或读取配置。

2.1 设置环境变量:setenv

setenv 函数用来设置环境变量,其标准定义如下:

int setenv(const char *name, const char *value, int overwrite);
  • name:环境变量名。
  • value:环境变量的值。
  • overwrite:如果环境变量已存在,是否替换其值。如果 overwrite 为 0,则不会替换。

返回值:

  • 0:成功。
  • -1:失败(极少见的情况)。

示例:设置环境变量

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

int main() {
    // 设置环境变量
    if (setenv("MY_VAR", "1234", 1) == 0) {
        printf("环境变量 MY_VAR 设置成功\n");
    } else {
        printf("设置环境变量失败\n");
    }

    // 获取并打印环境变量
    char *value = getenv("MY_VAR");
    if (value) {
        printf("MY_VAR 的值是: %s\n", value);
    } else {
        printf("未找到环境变量 MY_VAR\n");
    }

    return 0;
}

运行程序后,会显示如下结果:

环境变量 MY_VAR 设置成功
MY_VAR 的值是: 1234

2.2 获取环境变量:getenv

getenv 函数用来获取指定环境变量的值,其标准定义如下:

char *getenv(const char *name);
  • name:要查询的环境变量名。
  • 返回值:如果找到对应的环境变量,返回其值;如果未找到,返回 NULL

示例:获取环境变量

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

int main() {
    // 获取环境变量
    char *value = getenv("HOME");
    if (value) {
        printf("HOME 环境变量的值是: %s\n", value);
    } else {
        printf("未找到 HOME 环境变量\n");
    }
    return 0;
}

如果系统中有设置 HOME 环境变量,该程序将输出其值,否则输出未找到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu离线docker compose安装DataEase 2.10.4版本笔记

1、先准备一个可以正常上网的相同版本的Ubuntu系统&#xff0c;可以使用虚拟机。Ubuntu系统需要安装好docker compose或docker-compose 2、下载dataease-online-installer-v2.10.4-ce.tar在线安装包&#xff0c;解压并执行install.sh进行安装和启动 3、导出docker镜像 sudo d…

Web开发 -前端部分-CSS-2

一 长度单位 代码实现&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

Data Filtering Network 论文阅读和理解

目录 一、TL&#xff1b;DR 二、Introduction 2.1 apple的结论 2.2 业界做法&#xff1a; 2.3 我们的做法&#xff08;Apple&#xff09; 2.4 如何获取好的DFN 三、未完待续&#xff08;这周出去购物了&#xff0c;下周继续补充&#xff09; 一、TL&#xff1b;DR 核心…

计算机网络 (48)P2P应用

前言 计算机网络中的P2P&#xff08;Peer to Peer&#xff0c;点对点&#xff09;应用是一种去中心化的网络通信模式&#xff0c;它允许设备&#xff08;或节点&#xff09;直接连接并共享资源&#xff0c;而无需传统的客户端-服务器模型。 一、P2P技术原理 去中心化架构&#…

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…

Python网络自动化运维---SSH模块

目录 SSH建立过程 实验环境准备 一.SSH模块 1.1.Paramiko模块 1.1.1实验代码 1.1.2代码分段讲解 1.1.3代码运行过程 1.2Netmiko模块 Netmiko模块对比paramiko模块的改进&#xff1a; 1.2.1实验代码 1.2.2代码分段讲解 1.2.3代码运行过程 二.Paramiko模块和Ne…

Linux:进程概念详解

进程详解 一、冯诺依曼计算机体系&#xff08;一&#xff09;体系概念&#xff08;二&#xff09;计算机之间的数据传输 二、操作系统&#xff08;一&#xff09;操作系统设计的意义&#xff08;二&#xff09;操作系统的管理功能&#xff08;三&#xff09;系统调用的实质 三、…

【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01;本次我们为大家带来的就是具体到气象监…

STM32之CubeMX图形化工具开发介绍(十七)

STM32F407 系列文章 - STM32CubeMX&#xff08;十七&#xff09; 目录 前言 一、CubeMX 二、下载安装 1.下载 2.安装 3.图解步骤 三、用户界面 1.项目配置 2.项目生成 3.项目文件解释 4.新建工程 5.查看原工程 四、FAQ 总结 前言 STMCube源自意法半导体&#xf…

top命令返回值有异常问题解决

异常问题&#xff1a;load average值不正常 排查思路&#xff1a; 1.找到是哪个进程引起的异常&#xff0c;看看是否有cpu占用过高或者mem占用过高的进程 再根据具体情况分析原因。 定位到异常进程后&#xff0c;首先打堆栈&#xff0c;留存现场日志&#xff0c;然后停止进…

sqlfather笔记

这里简单记录写学习鱼皮sqlfather项目的笔记&#xff0c;以供以后学习。 运行 将前后端项目clone到本地后&#xff0c;修改对应配置文件运行项目。 后端 1.配置好mysql后运行这个sql文件建立对应的表。 2.修改数据库密码 3.修改完后运行启动类即可 4. 启动结果 5.查看A…

【Axure高保真原型】数字滚动效果

今天和大家分享数字滚动效果的原型摸吧原型模板&#xff0c;效果包括&#xff1a; 在输入框输入目标数值后&#xff0c;点击滚动按钮&#xff0c;下方数字自动滚动到对应的数值&#xff1b; 在输入框输入初始数值后&#xff0c;点击设置初始值按钮&#xff0c;可以设置下方数字…

“AI人工智能内容辅助创作平台:让创意不再“卡壳”

在如今这个信息爆炸的时代&#xff0c;内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划&#xff0c;还是普通学生写作文&#xff0c;大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候&#xff0c;脑袋里空空如也&#xff0c;一个字都写不出来&#xff0c;那…

VSCode最新离线插件拓展下载方式

之前在vscode商店有以下类似的download按钮&#xff0c;但是2025年更新之后这个按钮就不提供了&#xff0c;所以需要使用新的方式下载 ps:给自己的网站推广下~~&#xff08;国内直连GPT/Claude&#xff09; 新的下载方式1 首先打开vscode商店官网&#xff1a;vscode插件下载…

python——Django 框架

Django 框架 1、简介 Django 是用python语言写的开源web开发框架&#xff0c;并遵循MVC设计。 Django的**主要目的是简便、快速的开发数据库驱动的网站。**它强调代码复用&#xff0c;多个组件可以很方便的以"插件"形式服务于整个框架&#xff0c;Django有许多功能…

搜索功能实现

前言 主要实现思路是全局监听点击事件的点击范围是否包含搜索结果内容。 效果 上代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…

两份PDF文档,如何比对差异,快速定位不同之处?

PDF文档比对是通过专门的工具或软件&#xff0c;自动检测两个PDF文件之间的差异&#xff0c;并以可视化的方式展示出来。这些差异可能包括文本内容的修改、图像的变化、表格数据的调整、格式的改变等。比对工具通常会标记出新增、删除或修改的部分&#xff0c;帮助用户快速定位…

K8S 亲和性与反亲和性 深度好文

今天我们来实验 pod 亲和性。官网描述如下&#xff1a; 假设有如下三个节点的 K8S 集群&#xff1a; k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8-alpine docker pull nginx…

用户中心项目教程(五)---MyBatis-Plus完成后端初始化+测试方法

文章目录 1.数据库的链接和创建2.建库建表语句3.引入依赖4.yml配置文件5.添加相对路径6.实体类的书写7.Mapper接口的定义8.启动类的指定9.单元测试10运行时的bug 1.数据库的链接和创建 下面的这个就是使用的我们的IDEA链接这个里面的数据库&#xff1a; 接下来就是输入这个用户…

TL3562/3568移植无锡沐创N500L-AM4驱动进内核源码,报错及其解决方案

前言 创龙官方提供的资料无锡沐创N500L-AM4驱动是rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz&#xff1b;无锡沐创官方&#xff0c;截止目前&#xff0c;最新驱动是rnpgbe-0.2.3-f26b9a4.tar.gz。考虑到开发的稳妥性&#xff0c;先选用创龙尝试过的rnpgbe-0.1.0.rc60-dd9f3cf.tar.gz来移…