C語言|命令行參數

2021-01-07 騰訊網

執行程序時,可以從命令行傳值給 C 程序。這些值被稱為命令行參數,它們對程序很重要,特別是當您想從外部控制程序,而不是在代碼內對這些值進行硬編碼時,就顯得尤為重要了。

命令行參數是使用 main() 函數參數來處理的,其中,argc 是指傳入參數的個數,argv[] 是一個指針數組,指向傳遞給程序的每個參數。下面是一個簡單的實例,檢查命令行是否有提供參數,並根據參數執行相應的動作:

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

使用一個參數,編譯並執行上面的代碼,它會產生下列結果:

$./a.out testing The argument supplied is testing

使用兩個參數,編譯並執行上面的代碼,它會產生下列結果:

$./a.out testing1 testing2 Too many arguments supplied.

不傳任何參數,編譯並執行上面的代碼,它會產生下列結果:

$./a.out One argument expected

應當指出的是,argv[0] 存儲程序的名稱,argv[1] 是一個指向第一個命令行參數的指針,*argv[n] 是最後一個參數。如果沒有提供任何參數,argc 將為 1,否則,如果傳遞了一個參數,argc 將被設置為 2。

多個命令行參數之間用空格分隔,但是如果參數本身帶有空格,那麼傳遞參數的時候應把參數放置在雙引號 「」 或單引號 」 內部。

讓我們重新編寫上面的實例,有一個空間,那麼你可以通過這樣的觀點,把它們放在雙引號或單引號」」」」。讓我們重新編寫上面的實例,向程序傳遞一個放置在雙引號內部的命令行參數:

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

使用一個用空格分隔的簡單參數,參數括在雙引號中,編譯並執行上面的代碼,它會產生下列結果:

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

相關焦點

  • C語言命令行參數如何解析?你經常用的終端怎麼運行的你說不清楚!
    今天我們說下,命令行參數,我們在寫工具的時候,基本上都是帶著參數的。而在windows XP或更高版本,命令行的最大長度為8191個字符,Linux下可以用這個命令查看,getconf ARG_MAX,一般情況下都是比windows大很多。
  • C/C++學習----使用C語言代替cmd命令、cmd命令大全
    一、通過C語言代碼來實現cmd命令行功能:這裡用到了c語言中的一個庫:#include<stdlib.h>註:少了第05行的單詞start和第06行的pause,都不能實現這個功能。例 rmdir c:\qqdownload/s 刪除C盤的qqdownload目錄。  del [目錄名或文件名] [/f][/s][/q] 刪除 參數:/f 刪除只讀文件/s 刪除該目錄及其下的所有內容 /q 刪除前不確認  del c:\del /s /q 自動刪除c盤的del目錄。
  • C/C+編程筆記:C語言預處理命令是什麼?不要以為你直接寫#就行!
    很多小夥伴在自己寫代碼的時候,已經多次使用過#include命令。使用庫函數之前,應該用#include引入對應的頭文件。其實這種以#號開頭的命令稱為預處理命令。
  • Win10 學院:Setup.exe 命令行參數詳解
    通過在其後面添加各種各樣的命令行參數,我們可以在某種程度上自定義Windows10的安裝行為。下面,Win10之家也為大家帶來了部分命令行參數詳解。 ▼Win10系統安裝程序Setup.exe命令行參數詳解:
  • python命令參數及模塊的導入學習
    python已經成為程式語言排行榜的老大了,要向不被時代淘汰,就要緊跟時代步伐,在IT編程世界的今天,不會python可是不行的,今天繼續學習python的命令及相關模塊導入學習。import 與 from...import
  • 在Stata中編寫估計命令:編寫C語言插件
    這篇文章演示了如何用其他語言(如C,C 或Java)編寫的代碼插入到Stata中。這種技術被稱為Stata編寫插件或編寫動態連結庫(DLL)。本文中,在C語言中編寫一個插件,它實現了mymean11.ado中mymean_work()執行的計算,在文章在Stata中編寫估計命令編寫插件中討論過。
  • 5. qemu命令行參數
    KVM 實際調用的是qemu-system-x86_64命令參數如下root@:/etc/libvirt/qemu# kvm -helpQEMU emulator version 2.3.0 (Debian 1:2.3+dfsg-
  • 快速上手系列-C語言之預編譯命令、宏定義及條件編譯
    上一篇寫了C語言中變量的存儲類別,提到普通局部變量、普通全局變量和靜態局部變量及靜態全局變量,這裡簡單了解一下C語言的預編譯命令、宏定義和條件編譯。預編譯命令(預編譯處理--->編譯---->彙編--->連接)1、預處理:預處理是C語言的一個重要功能,如文件包含、常量定義都屬於預處理命令,C語言提供的預處理功能主要有以下三種:1)文件包含 #include2)宏定義 #define3)條件編譯 #if #endif4)防止頭文件重複包含2、文件包含處理
  • c語言main函數裡的參數argv和argc解析
    :argc和argv,那麼這兩個參數是表示什麼意思,怎麼用呢?(1)main函數是特殊的,首先這個名字是特殊的;因為在c語言裡面規定了main函數是整個程序的入口;其它函數只有直接或者間接被main函數所調用才能被執行,如果沒用被main函數直接或者間接調用,則這個函數在整個程序中無用。
  • Python 命令行參數解析庫argparse
    output_source_dir,feature,levels,但是該函數print不能在命令行運行,只能在腳本內部調用,於是我們需要python標準庫內的argparse[1]來幫忙。使用步驟:1)import argparse    首先導入模塊2)parser = argparse.ArgumentParser()    創建一個解析對象3)parser.add_argument()    向該對象中添加你要關注的命令行參數和選項4)parser.parse_args()    進行解析對於第
  • 編程模板-R語言腳本寫作:最簡單的統計與繪圖,包安裝、命令行參數解析、文件讀取、表格和矢量圖輸出
    個人認為:是否能熟悉使用Shell(項目流程搭建)+R(數據統計與可視化)+Perl/Python等(膠水語言,數據格式轉換,軟體間銜接)三門語言是一位合格生物信息工程師的標準。之前分享過我個人的《Shell語言》和《Perl語言》腳本寫作模板(藍色字為連結直達),今天再分享一下我的R語言模板,一次性解決困擾新手的眾多問題,如包安裝、命令行參數解析、文件讀取、
  • 嵌入式——C語言 1day
    gec@ubuntu:~$   -> 命令行gec@ubuntu:~$ asjhgasvdasd       --> 命令是寫在命令行的後面(輸入完要按回車)asjhgasvdasd: command not found  --> 命令執行的結果:無法識別該命令,因為命令沒找到。4、這個命令行是由什麼東西組成的?
  • 命令行工具開發:如何快速實現命令行提示?
    阿里妹導讀:對於稍微複雜一些的命令行工具,命令行的提示功能必不可少。那麼對於不同語言的開發者,有沒有一種簡單快捷的實現方式呢?本文分享一種快速實現的方法,使用YAML文件定義命令行工具的使用規範,再通過工具自動生成各種shell的命令行提示腳本,最後分享一些至關重要的命令行解析器。
  • Linux運維中比較常見命令及參數
    與文件權限及名稱有關的參數:-name filename:查找文件名稱為 filename 的文件-size [+-]SIZE :查找比SIZE還要大(+)或小(-)的文件,這個SIZE的規格有:c:代表byte ,k:代表1024bytes.
  • 【python】命令行參數argparse用法詳解
    定義了一個叫echo的參數,默認必選中文名叫可選參數,有兩種方式:一種是通過一個-來指定的短參數,如-h;一種是通過--來指定的長參數,如--help第一行定義了一個互斥組,第二、三行在互斥組中添加了-v和-q兩個參數,用上個例子中的程序進行如下測試:
  • 【C語言】02.第一個C語言程序
    我們前面編寫的C語言代碼,應該保存為一個拓展名為.c的文件,這個.c文件稱為C語言程序的「原始碼文件」,也稱為「源文件」。按下快捷鍵command + s,輸入文件名(我這裡叫做one.c),選擇文件格式
  • Ping命令及其常用參數詳解
    一、命令原理Ping是ICMP的一個典型應用。Ping是檢測網絡連通的常用工具,同時也能收集其他相關信息。用戶可以在Ping命令中指定不同參數,如ICMP報文長度、發送的ICMP報文個數、等待回復響應的超時間等,設備根據配置的參數構造來發送ICMP報文,進行Ping測試。
  • Pytest之命令行執行
    access_token=00fe14445a5e307f2ff0914b1d3de083a390b3058d62c27ed50561298198bf9b' msg=ciParameterize()+'為您服務!'
  • C語言的main函數到底該怎麼寫
    第三種,返回值為int,參數為void:int main(void)這是常見的一種寫法。形參為void,表明它在調用的時候不能傳入任何參數,那麼它也就不能獲取命令行參數了。第四種,返回值為int,沒有參數:int main()看起來似乎和第三種沒有什麼區別,但這種形式卻有些許不同。
  • (宇宙最強C/C++編譯器)樂創DIY C語言講義​——2.6 GCC的使用
    後來微軟真正獨領作業系統風騷的,是其推出了Windows,其實Windows界面和最早只是DOS裡面的一個程序而已,用過Windows95的就知道,開完機電腦呈現給你的是一個命令行,要輸入一長串命令才可以進入作業系統,這種機制直到Windows XP才被取消,Windows成為真正的Windows。理所當然,由於某些用戶的習慣「DOS界面」下來了。DOS和Shell的區別大致如下。