main() 函数的有参形式

C语言main函数有参形式及命令行选项处理
博客介绍了C语言中main函数的有参形式。当外界需向main传递参数时,要用main(argc, *argv[])。其中,argc记录命令和参数总个数,argv是指针数组。还通过实例说明不同命令下argc和argv的值,最后提到处理命令行选项可用getopt函数。

初学C时看到的 main() 是无参函数,但是外界有时候要向 main 传递一些参数,

这时候就要用到 main(argc, *argv[]) 这样的有参形式

argc int类型,记录命令和参数的总个数,同时决定了 argv 指针数组的大小
argv 是一个指针数组

实例化的解释一下:

假设你编译获得的可执行程序叫 test

那么无参数的命令 $./test
传到main 里的 argc = 1 argv[0]="test"

如果你的命令是带参数的呢, 如: $./test -f file.txt
那么 argc = 3
argv[0] = "test"
argv[1] = "-f"
argv[2] = "file.txt"

处理 argc, argv 命令行选项的时候,可以用到 getopt 函数

在C语言中,`main`函数可以接受数以允许程序在启动时接收外部输入。这些数通常用于命令行数的处理。`main`函数的标准形式如下: ```c int main(int argc, char *argv[]) ``` - `argc`(argument count)是一个整数,表示传递给程序的命令行数的数量。 - `argv`(argument vector)是一个指向字符串数组的指针,每个字符串代表一个命令行数。 ### 使用带有数的main函数 #### 1. 数解析 当程序运行时,`argc`和`argv`会自动填充。`argv[0]`通常是程序本身的名称,而`argv[1]`到`argv[argc-1]`是用户提供的数。 ```c #include <stdio.h> int main(int argc, char *argv[]) { printf("Program name: %s\n", argv[0]); if (argc > 1) { printf("Number of arguments: %d\n", argc - 1); for (int i = 1; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } } else { printf("No arguments provided.\n"); } return 0; } ``` #### 2. 示例 假设编译后的程序名为`myprogram`,在命令行中运行如下命令: ```bash ./myprogram arg1 arg2 ``` 输出将是: ``` Program name: ./myprogram Number of arguments: 2 Argument 1: arg1 Argument 2: arg2 ``` #### 3. 数验证 在实际应用中,通常需要验证数的数量和内容是否符合预期。例如,确保用户提供了必要的数,否则给出提示。 ```c if (argc != 3) { printf("Usage: %s <arg1> <arg2>\n", argv[0]); return 1; } ``` #### 4. 数转换 如果需要将数转换为其他类型(如整数或浮点数),可以使用标准库函数如`atoi()`或`atof()`。 ```c #include <stdlib.h> int main(int argc, char *argv[]) { if (argc == 3) { int num1 = atoi(argv[1]); int num2 = atoi(argv[2]); printf("Sum: %d\n", num1 + num2); } else { printf("Please provide two numbers as arguments.\n"); } return 0; } ``` #### 5. 处理选项数 有时程序需要处理带有选项的数,例如`-f`或`--file`。可以通过遍历`argv`数组来实现。 ```c for (int i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'v': printf("Verbose mode enabled.\n"); break; case 'h': printf("Help requested.\n"); break; default: printf("Unknown option: %s\n", argv[i]); break; } } else { printf("Non-option argument: %s\n", argv[i]); } } ``` 通过这种方式,可以在C语言程序中有效地使用带有数的`main`函数,从而增强程序的灵活性和功能性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值