linux传参c语言,嵌入式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 函数。

658c714ebce82fc10756f7ebb476746f.png

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

编译运行测试

在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/”,使用命令“mkdir charcontrol”新建 charcontrol 文件夹,将源码 argvc.c 拷贝进去,进入新建的文件夹 charcontrol,如下图所示。

d3dc20f25062fba4126fc2add3cb757a.png

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

753c23c9ae0f90f74c4c143060d1fb83.png

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

872308d14a266b434d08402256089fd7.png

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值