argc argv的使用

本文详细介绍了C语言中main函数的参数argc、argv和env的作用及使用方法,并通过实例演示了如何获取命令行参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
在Turbo C2.0启动过程中, 传递main()函数三个参数: argc, argv和env。
       * argc:    整数, main()的命令行参数个数。
       * argv:    字符串数组。
                argv[0] 为程序运行的全路径名
                argv[1] 为在DOS命令行中执行程序名后的第一个字符串;
                argv[2] 为执行程序名后的第二个字符串;
                ...
                argv[argc]为NULL。
       *env:    字符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符
串。其中ENVVAR为环境变量。value 为ENVVAR的对应值
#include <stdlib.h>                                              
#include <stdio.h>                                               
       main(int argc, char *argv[], char *env[])                 
       {                                                         
            int i;                                               
            printf("%d/n", argc);       /* 为什么它的输出是 1, 它到底
是定义什么的,我看不明上面的解释*/                                   
            for(i=0; i<=argc; i++)                               
              printf("argv[%d]:%s/n", i, argv[i]);               
            for(i=0; env[i]!=NULL; i++)                          
                 printf(" env[%d]:%s/n", i, env[i]);              
        }                                                         

argc, argv, env是在main()函数之前被赋值的,编译器生成的可执行文件,main()不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。
printf("%d/n",argc) //这儿输出1是正确的,因为可执行文件名算第一个参数,即argv[0] == 可执行文件名
argc包含命令行选项的个数,argv包含argc个C风格字符串,代表由空格分开的命令选项比如说 你输入可执行程序的名字 work.exe 后面跟上 -d -o....
那么argv[0] = work.exe argv[1] = -d    argv[2] = -o
你可以让他们输出看看
给一个例子:
#include <stdio.h>;

int main(int argc, char *argv[])
{
printf("%d/n",argc);
while(argc)
printf("%s/n",argv[--argc]);
return 0;
}

假设将其编译为test.exe,
在命令行下,
test hello
得到的输出结果为
2
hello
test

main(int argc, char *argv[]),其中argc是指变量的个数,本例中指test和hello,即为2,
argc至少为1,原因就不用我说了吧
argv是一个char *的数组,其中存放变量的内容,此处
argv[0]中存放test,argv[1]存放hello
这个例子真的太经典了,所以留了下来。对于理解argv[]函数是很管用的。
### C语言中 `argc` 和 `argv` 的用法及含义 #### 参数定义 - **`argc`**: 表示命令行参数的总数,包括程序本身的名字。它是 `int` 类型的数据[^1]。 - **`argv`**: 是一个指向字符串数组的指针,存储了所有传入的命令行参数。其中,`argv[0]` 通常是程序的名称,后续元素则是用户输入的具体参数[^2]。 #### 示例代码解析 以下是一段简单的代码示例,展示了如何利用 `argc` 和 `argv` 输出命令行中的参数: ```c #include <stdio.h> int main(int argc, char *argv[]) { // 打印参数个数 printf("Number of arguments: %d\n", argc); // 遍历并打印每个参数 for (int i = 0; i < argc; i++) { printf("Argument [%d]: %s\n", i, argv[i]); } return 0; } ``` 在这个例子中: - 使用 `printf` 函数输出参数总个数 `argc`。 - 通过循环逐一访问 `argv` 数组中的每一项,并将其内容打印出来[^3]。 假设该程序被保存为 `example.c` 文件,并经过编译生成可执行文件 `example`。如果我们在终端运行此程序时提供了一些额外的参数,例如: ```bash ./example Hello World from Command Line ``` 那么程序会返回如下结果: ``` Number of arguments: 6 Argument [0]: ./example Argument [1]: Hello Argument [2]: World Argument [3]: from Argument [4]: Command Argument [5]: Line ``` 这里可以看出,即使只提供了五个单词作为附加参数,但由于程序名也算作第一个参数,因此总共记录为了六个参数。 #### 实际应用场景 1. **文件处理**:可以通过命令行指定要打开或操作的文件名,从而简化交互过程[^4]。 ```c if (argc != 2) { fprintf(stderr, "Usage: %s filename\n", argv[0]); return 1; } FILE *file = fopen(argv[1], "r"); if (!file) { perror("Error opening file"); return 1; } ``` 2. **配置选项管理**:允许用户通过特定标记(如 `-v`, `--verbose`)启用不同的功能模块。 ```c for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0) { verbose_mode = true; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值