0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言中一个简单的实例,检查命令行是否有提供参数

电子工程师 来源:未知 作者:李倩 2018-11-12 14:49 次阅读

执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。

命令行参数是使用 main() 函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动作:

#includeint main(int argc,char*argv[]){ if( argc ==2) { printf("The argument supplied is %s\n", argv[1]); } elseif( argc >2) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); }}

使用一个参数,编译并执行上面的代码,它会产生下列结果:

$./a.out testingThe argument supplied is testing

使用两个参数,编译并执行上面的代码,它会产生下列结果:

$./a.out testing1 testing2Too many arguments supplied.

不传任何参数,编译并执行上面的代码,它会产生下列结果:

$./a.outOne argument expected

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

多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 "" 或单引号 '' 内部。让我们重新编写上面的实例,有一个空间,那么你可以通过这样的观点,把它们放在双引号或单引号""""。让我们重新编写上面的实例,向程序传递一个放置在双引号内部的命令行参数:

#includeint main(int argc,char*argv[]){ printf("Program name %s\n", argv[0]); if( argc ==2) { printf("The argument supplied is %s\n", argv[1]); } elseif( argc >2) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); }}

使用一个用空格分隔的简单参数,参数括在双引号中,编译并执行上面的代码,它会产生下列结果:

$./a.out"testing1 testing2"Progranm name ./a.outThe argument supplied is testing1 testing2

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7588

    浏览量

    135740
  • 程序
    +关注

    关注

    115

    文章

    3753

    浏览量

    80709

原文标题:C语言中的命令行参数

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在STM32实现命令行

    工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了命令行工具,
    发表于 12-09 11:32 2228次阅读

    支持命令行传递的参数吗?

    的每一个。要手动尝试在Makefile中设置CFLAGS。可以在预处理器宏部分访问命令行传递的参数吗?如果这是在命令行值不是构建的部分的I
    发表于 03-17 06:03

    如何获取其它程序的命令行参数

    开发环境:VC6 Windows XP 测试环境:WindowsXP 我们都知道,在程序里获取命令行参数简单,WinMain函数会以参数的形式传递给我们,或者可以调用API Ge
    发表于 10-14 09:24 1次下载

    C语言入门教程-命令行参数

    命令行参数C中,获取用户输入的命令行参数是很方便的。程序的主函数会接受
    发表于 07-29 14:22 2598次阅读

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2274次阅读

    CMD的命令行高级教程

    CMD的命令行高级教程
    发表于 10-24 08:31 30次下载
    CMD的<b class='flag-5'>命令行</b>高级教程

    mini shell命令行调试工具(单片机、c语言

    @mini shell命令行调试工具介绍Mini shell 命令行调试工具(单片机、c语言)Mini shell是
    发表于 11-29 10:21 9次下载
    mini shell<b class='flag-5'>命令行</b>调试工具(单片机、<b class='flag-5'>c</b><b class='flag-5'>语言</b>)

    Shell命令行解释器简介

    Shell 是命令行解释器,Shell 为用户提供了与设备进行命令行交互的方式,用户通过串口、以太网、无线等方式将
    的头像 发表于 08-19 17:20 3129次阅读

    Golang基于flag库实现命令行工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具。
    的头像 发表于 10-28 09:26 1240次阅读

    Fcoder从命令行批量转换为TIFF

    命令行批量转换为TIFF 2TIFF图像转换软件是专业的命令行实用程序,用于以批处理模式将办公文档和图像转换为TIFF。基于简单
    的头像 发表于 05-22 14:13 727次阅读
    Fcoder从<b class='flag-5'>命令行</b>批量转换为TIFF

    开源MCU级的命令行交互组件

    开源MCU级命令行交互组件~
    的头像 发表于 10-17 16:26 384次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个</b>开源MCU级的<b class='flag-5'>命令行</b>交互组件

    linux命令行运行步骤

    现光标右边出现了类似于“ ”或“#”的字符,这就是命令行提示符。在大多数Linux发行版中,普通用户的提示符是“ ”,而管理员或root用户的提示符是“#”。 查找可用的命令 Li
    的头像 发表于 11-17 10:18 725次阅读

    pycharm命令行终端运行代码

    Python是种非常流行的编程语言,许多开发者使用它来编写各种应用程序和脚本。为了方便开发者编写和测试代码,PyCharm是种集成开发环境(IDE),它提供了许多功能和工具,其中包
    的头像 发表于 11-22 11:20 4230次阅读

    eclipse怎么使用命令行

    。JDK是运行Java程序所必需的环境,而Eclipse则是基于Java开发的IDE。在确保安装完毕后,我们可以通过以下步骤来在命令行
    的头像 发表于 12-06 11:26 2280次阅读

    idea如何输入命令行参数

    。 在大多数编程语言中,都提供了内置的机制来处理命令行参数,以便程序可以根据用户的需求进行不同的操作。下面我们将逐步介绍如何在常见的编程语言中
    的头像 发表于 12-06 15:01 1006次阅读