zoukankan      html  css  js  c++  java
  • 传递命令行参数示例代码 (C 和 Python)

    C语言

    在 C 语言中, 使用 main 函数的输入参数 argc 和 argv 传入命令行参数.

    • argc 为 int 类型, 表示传入命令行参数的个数 (argument count);
    • argv 为 char** 类型, 表示命令行参数向量 (argument vector), 每个命令行参数为字符串类型, 因此 参数 argv 也可以看做是字符串数组.

    示例代码如下:

    /*
    * filename: pass_args.c
    * This code is modified a little according to the Arun's answer in https://stackoverflow.com/questions/3898021/regarding-mainint-argc-char-argv
    */
    
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        int i = 0;
    
        printf(" argc = %d
    ", argc);
        for (; i < argc; ++i) {
            printf(" argv[ %d ] = %s
    ", i, argv[i]);
        }
    
        return 0;
    }

    编译命令为

    $ gcc pass_args.c -o pass_args

    运行命令及结果如下:

    $ ./pass_args arg1 arg2 3
    argc = 4
    argv[ 0 ] = ./pass_args
    argv[ 1 ] = arg1
    argv[ 2 ] = arg2
    argv[ 3 ] = 3

     

    Python 语言

    Python 语言可以使用 sys 模块中的 argv 变量, 实现相似的功能.  如果需要更高级的命令行参数传递方式, 可以使用 argparse 模块. 使用 sys.argv 的示例代码如下:

    #!/usr/bin/env python
    # -*- coding: utf8 -*-
    from __future__ import print_function
    import sys
    
    if __name__ == '__main__':
        print ('The argument count is %d.' % len(sys.argv))
        print ('The argument vectors: ')
        for i, arg in enumerate(sys.argv):
            print ('  argv[ %d ] = %s' % (i, arg))

    运行命令及结果如下:

    $ python pass_args.py arg1 arg2 3
    The argument count is 4.
    The argument vectors: 
      argv[ 0 ] = pass_args.py
      argv[ 1 ] = arg1
      argv[ 2 ] = arg2
      argv[ 3 ] = 3

    参考资料

    1. Regarding 'main(int argc, char *argv[])' [duplicate]. https://stackoverflow.com/questions/3898021/regarding-mainint-argc-char-argv

    2. Entry point - Wikipedia. https://en.wikipedia.org/wiki/Entry_point

    3. Python - Command Line Arguments. https://www.tutorialspoint.com/python/python_command_line_arguments.htm

  • 相关阅读:
    Java IO: 读取classpath资源
    Java IO: Reader和Writer
    Java IO: 读写zip文件
    OpenFlow运行机制总结
    OpenFlow流表概述
    Java日志系统(学习总结)
    卷积神经网络重要回顾
    Java Servlet学习笔记
    fragment实例
    Fragment应用
  • 原文地址:https://www.cnblogs.com/klchang/p/9309402.html
Copyright © 2011-2022 走看看