嵌入式Linux系统:应用开发基础_命令行参数(C语言)

       命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数。

        main 函数作为应用程序的入口,在头文件“#include ”中。
        main 函数需要传参数的时候完整的定义为
        int main(int argc,char **argv)
        参数 argc,表示参数的个数
        参数**argv,存储输入字符的数组
        argv[0]表示程序名称
        argv[1]——argv[n]输入的参数
        不传参数的时候定义为
        int main(void)
        函数 main 的返回值为类型为 int,用于判断程序执行成功还是失败
 

       应当指出的是,argv[0]存储程序的名称,argv[1]是一个指向第一个命令行参数的指针,*argv[n]是最后一个参数。如果没有提供任何参数,argc 将为1,否则,如果传递了一个参数,argc将被设置为2。

        多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号或单引号内部

 1 #include 
 2 
 3 int main(int argc, char *argv[]) {
 4     if (argc == 2) {
 5         printf("The argument supplied is %s\n", argv[1]);
 6     } else if (argc > 2) {
 7         printf("Too many arguments supplied.\n");
 8     } else {
 9         printf("One argument expected.\n");
10     }
11 }

Result:

[xxxxx]$ ./Test.o One argument expected.

[xxxxx]$ ./Test.o a The argument supplied is a

[xxxxx]$ ./Test.o a b Too many arguments supplied.

[xxxxx]$ ./Test.o "a b" The argument supplied is a b

 

嵌入式系统中的一个例子:

        编写简单的 argvc.c 文件测试 main 函数。
嵌入式Linux系统:应用开发基础_命令行参数(C语言)_第1张图片

        如上图所示,将输入的参数第一个和第二个转换成 int 类型,赋值给 i 和 j,最后输出打印。其中 argv[0]为程序名称,这里就是后面要编译的目标文件“argvc”。
 

        编译运行测试
        在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/”,使用命令“mkdir charcontrol”新建 charcontrol 文件夹,将源码 argvc.c 拷贝进去,进入新建的文件夹 charcontrol,如下图所示。
嵌入式Linux系统:应用开发基础_命令行参数(C语言)_第2张图片

        使用命令“arm-none-linux-gnueabi-gcc -o argvc argvc.c -static”编译 argvc 文件,如下图所示,使用命令“ls”可以看到生成了 argvc 可执行文件。

嵌入式Linux系统:应用开发基础_命令行参数(C语言)_第3张图片

        将编译成的可执行文件 argvc,拷贝到 U 盘,启动开发板,插入 U 盘,加载 U 盘,运行程序如下。

嵌入式Linux系统:应用开发基础_命令行参数(C语言)_第4张图片

        如上图所示,程序成功运行,打印:the Program name is ./mnt/udisk/argvc。因为运行的程序就是“./mnt/udisk/argvc”,这是第一个参数,The command line has 2 argument:10,11。输入的参数是 10 和 11,对应 argv[1]和 argv[2]。
 

 

 

 

你可能感兴趣的:(嵌入式Linux,应用编程)