1、C语言命令行参数
命令行参数是使用 main()
函数参数来处理的,其中,argc
是指传入参数的个数,argv[]
是一个指针数组,指向传递给程序的每个参数。
例如,
#include <stdio.h>
int main(int argc, char ** argv)
{
int i;
for (i=0; i < argc; i++)
printf("Argument %d is %s.\n", i, argv[i]);
return 0;
}
注意:argv[0]指向的字符串就是第一个命令行参数,即可执行程序的文件名,argv[1]
指向第二个命令行参数,argv[2]
指向第三个命令行参数,依此类推。
传参格式:
编译好程序 参数1 参数2 参数3
例如,
./a.out hello cjavapy 3344
注意:多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 ""
或单引号''
内部。
例如,如是一个参数中有空格,可以通过双引号的方式传递,具体如下:
./a.out "cjavapy com" cjavapy com
2、打印命令行参数
可以通过main
函数的两个参数argc
和argv
来获取命令行参数,并使用printf
函数将其打印出来。
#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;
}
3、常见的命令行参数用法
argc
表示命令行传递给程序的参数个数。argv
是一个字符串数组,包含了传递给程序的参数。命令行参数可以被用作控制程序的行为,例如传入文件名、配置参数或数值等。常用函数如 atoi()
和 atof()
可以用于将命令行参数从字符串转换为整数或浮点数。
1)检查参数数量
在处理命令行参数时,通常需要检查 argc
的值,以确保提供了足够的参数。
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s <param1> <param2>\n", argv[0]);
return 1;
}
printf("Param 1: %s\n", argv[1]);
printf("Param 2: %s\n", argv[2]);
return 0;
}
2)将参数转换为整数或浮点数
命令行参数以字符串形式传递,通常需要将字符串转换为适当的数据类型。可以使用 atoi()
或 atof()
函数将字符串转换为整数或浮点数。
#include <stdio.h>
#include <stdlib.h> // 包含 atoi 函数
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s <num1> <num2>\n", argv[0]);
return 1;
}
// 将命令行参数转换为整数
int num1 = atoi(argv[1]);
int num2 = atoi(argv[2]);
printf("Sum: %d\n", num1 + num2);
return 0;
}
3)处理字符串输入
命令行参数以字符串形式传入,可以直接操作或进行字符串处理,例如计算字符串长度、字符串比较等。
#include <stdio.h>
#include <string.h> // 包含 strcmp 函数
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <string>\n", argv[0]);
return 1;
}
// 比较输入字符串
if (strcmp(argv[1], "hello") == 0) {
printf("You entered 'hello'!\n");
} else {
printf("You entered something else.\n");
}
return 0;
}