Command-Line Arguments

All the executable programs above have a main(void) program

  • more generally, executables take arguments on the command line
  • these enter the program via parameters

    切换行号显示

    1  int main(int argc, char *argv[])
    

For example:

prompt$ ./a.out -pre 3

means that:

  • argc refers to the number of arguments, including the program name

    • argc = 3

  • argv[] allows access to arguments represented as strings

    • argv[0] is a pointer to the string "./a.out"

    • argv[1] is a pointer to the string "-pre"

    • argv[2] is a pointer to the string "3"

Command-line argument processing example 1

Write a program that:

  • takes an optional numerical command-line argument 1, 2, 3 or 4
  • if the argument is not one of these characters (!), a usage message is printed

    切换行号显示

     // commarg.c
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[]) {
    if (argc == 1 ||
    (argc == 2 && atoi(argv[1]) >= 1 && atoi(argv[1]) <= 4)) {
    // we can do something here
    } else {
    printf("Usage: %s [1|2|3|4]\n", argv[0]);
    }
    return EXIT_SUCCESS;
    }
  • notice that atoi() had to be called to convert the character to a number

  • compiling and executing the program:
     prompt$ dcc commarg.c
    prompt$ ./a.out
    prompt$ ./a.out 1
    prompt$ ./a.out 2
    prompt$ ./a.out 3
    prompt$ ./a.out 4
    prompt$ ./a.out 5
    Usage: ./a.out [1|2|3|4]

Command-line argument processing example 2

Write a program that:

  • takes an optional command-line switch -reverse

  • if the switch is not correct, a usage message is printed

    切换行号显示

     // commargrev.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(int argc, char *argv[]) {
    if (argc == 1 ||
    (argc == 2 && !strcmp(argv[1], "-reverse"))) {
    // NOTE: strcmp returns 0 if matches.
    // we could do something here
    } else {
    printf("Usage: %s [-reverse]\n", argv[0]);
    }
    return EXIT_SUCCESS;
    }
     prompt$ ./a.out
    prompt$ ./a.out -reverse
    prompt$ ./a.out rubbish
    Usage: ./a.out [-reverse]

Makefile

【413】C 语言 Command line的更多相关文章

  1. Visual Studio C++ Command Line

    最近在Visual Studio 2012进行vp8的开发,之前一直都是在ubuntu上进行开发,关于编译链接的一些选项可直接在makefile中定义,比如vp8的头文件都放在include文件下面, ...

  2. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  3. ERROR: Unrecognized command line argument: 'use'

    Unrecognized command line argument: 'use' gvm--GoLang语言多版本管理工具 基础环境 centos6.5 报错内容 gvm在命令行以外的任何地方调用 ...

  4. How to build .apk file from command line(转)

    How to build .apk file from command line Created on Wednesday, 29 June 2011 14:32 If you don’t want ...

  5. Can't use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.

    1.最近使用SVN工具时,Checkout出项目到本地后后,然后将其导入到Intellij idea中开发,在提交svn代码的时候,出现这样的错误:Can't use Subversion comma ...

  6. How to Use Android ADB Command Line Tool

    Android Debug Bridge (adb) is a tool that lets you manage the state of an emulator instance or Andro ...

  7. Chrome-Console( Command Line API Reference)

    来源于:https://developers.google.com/web/tools/chrome-devtools/console/command-line-reference The Comma ...

  8. logoff remote desktop sessions via command line tools

    This trick I learned from my one of ex-college.  In Windows servers, only two remote desktop session ...

  9. 使用intellij的svn时提示出错: Can't use Subversion command line client: svn.Errors found while svn working copies detection.

    使用Intellij的svn时提示出错:Can't use Subversion command line client: svn. Errors found while svn working co ...

随机推荐

  1. .NET Core 3.0之深入源码理解Configuration(一)

    Configuration总体介绍 微软在.NET Core里设计出了全新的配置体系,并以非常灵活.可扩展的方式实现.从其源码来看,其运行机制大致是,根据其Source,创建一个Builder实例,并 ...

  2. java基础语法——方法,static关键字

    一:方法: 1.什么是方法: 通俗地讲,方法就是行为.它是完成特定功能的代码块能执行一个功能.它包含于类和对象中. 2.为什么要有方法: *提高代码的复用性. *提高效率 *利于程序维护 3.命名规则 ...

  3. Spring错误异常重试框架guava-retrying

    官网:https://github.com/rholder/guava-retrying Maven:https://mvnrepository.com/artifact/com.github.rho ...

  4. Go --- 设计模式(模板模式)

    模版模式真的是一个好东西.所谓模版模式,就是说,某几个类中相同的操作和代码提取到父类的一个函数中,并定义相同的操作为抽象函数.由子类来实现.估计我也没表达清楚,下面还是看代码来讲解吧. 例:我们有两个 ...

  5. 从壹开始前后端分离【重要】║最全的部署方案 & 最丰富的错误分析

    缘起 哈喽大家好!今天是周一了,这几天趁着午休的时间又读了一本书<偷影子的人>,可以看看

  6. Java 8 中的 java.util.Optional

    Java 8 中的 java.util.Optional 学习了:https://blog.csdn.net/sun_promise/article/details/51362838 package ...

  7. POJ2752 Seek the Name, Seek the Fame 【KMP】

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11602   Ac ...

  8. SQL 连接(JOIN)

    SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来. SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JO ...

  9. Memcache应用场景介绍

    面临的问题 对于高并发高訪问的Web应用程序来说,数据库存取瓶颈一直是个令人头疼的问题.特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰 值已经达到500的时候,那你的程序执行离崩溃的边 ...

  10. HDU 2795 Billboard(宣传栏贴公告,线段树应用)

    HDU 2795 Billboard(宣传栏贴公告,线段树应用) ACM 题目地址:HDU 2795 Billboard 题意:  要在h*w宣传栏上贴公告,每条公告的高度都是为1的,并且每条公告都要 ...