1. 程式人生 > >傳遞命令行參數示例代碼 (C 和 Python)

傳遞命令行參數示例代碼 (C 和 Python)

font com 因此 char* tac 示例 std erl __name__

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\n", argc); for (; i < argc; ++i) { printf(" argv[ %d ] = %s\n", 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

傳遞命令行參數示例代碼 (C 和 Python)