唐婧壹
(山西機(jī)電職業(yè)技術(shù)學(xué)院 電子電氣工程系,山西 長(zhǎng)治 046011)
基于命令行傳遞給主函數(shù)參數(shù)的應(yīng)用
唐婧壹
(山西機(jī)電職業(yè)技術(shù)學(xué)院 電子電氣工程系,山西 長(zhǎng)治 046011)
文章通過(guò)對(duì)C語(yǔ)言程序設(shè)計(jì)中命令行傳遞給主函數(shù)參數(shù)的討論,介紹了命令行傳遞給主函數(shù)參數(shù)的個(gè)數(shù)以及類型,然后分析這些參數(shù),并用這些參數(shù)作為程序運(yùn)行中處理的數(shù)據(jù)解決具體的問(wèn)題。
主函數(shù);參數(shù);傳遞;命令行
C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,程序設(shè)計(jì)時(shí)主要是編寫函數(shù)和調(diào)用函數(shù),設(shè)計(jì)一個(gè)最簡(jiǎn)單的C語(yǔ)言程序至少編寫一個(gè)主函數(shù)。設(shè)計(jì)復(fù)雜的C語(yǔ)言程序除了編寫主函數(shù)外,還需用戶自己設(shè)計(jì)函數(shù),調(diào)用C語(yǔ)言中的庫(kù)函數(shù)。而無(wú)論設(shè)計(jì)函數(shù)還是調(diào)用函數(shù)時(shí),函數(shù)的參數(shù)起著重要的作用。主函數(shù)的參數(shù)是C語(yǔ)言程序編譯后,通過(guò)命令行進(jìn)行傳遞的,在程序運(yùn)行時(shí)起著一定的作用。
Windows操作系統(tǒng)升級(jí)后,在附件菜單中有一選項(xiàng)是“命令提示符:”,它的作用是當(dāng)有的操作不需要一個(gè)窗口時(shí),切換到此方式下可執(zhí)行一條命令。這種方式就可通過(guò)命令行把參數(shù)傳遞給主函數(shù),也就是C語(yǔ)言編寫的程序脫離開(kāi)C環(huán)境的執(zhí)行。
在編寫C語(yǔ)言程序的主函數(shù)時(shí),如果不需要命令行傳遞的參數(shù),主函數(shù)的圓括號(hào)是空的;若需要命令行傳遞的參數(shù),主函數(shù)的首部是如下形式:
C語(yǔ)言中規(guī)定主函數(shù)的參數(shù)只有兩個(gè),其中第一個(gè)必須是整型,它的值是命令行傳遞給主函數(shù)參數(shù)的個(gè)數(shù);第二個(gè)參數(shù)必須是字符型的指針數(shù)組,每個(gè)指針數(shù)組按下標(biāo)順序指向命令的參數(shù)。通過(guò)第一個(gè)參數(shù)的值可知道命令行有幾個(gè)參數(shù),通過(guò)第二個(gè)參數(shù),按照字符型指針數(shù)組可知道參數(shù)是有哪些字符組成。這就為分析傳遞給主函數(shù)的參數(shù)提供了方便。
通過(guò)對(duì)主函數(shù)參數(shù)個(gè)數(shù)及類型的討論,為分析傳遞給主函數(shù)的參數(shù)提供了方便。某年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言筆試中有一道選擇題如下:
有以下程序:
假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以上命令行
exam 123<回車>
則運(yùn)行結(jié)果為:
A.6 B.8 C.3 D.4
此題目考的知識(shí)點(diǎn)就是主函數(shù)參數(shù)的內(nèi)容,如果知道參數(shù)個(gè)數(shù)argc的值是2,即命令行有兩個(gè)參數(shù),字符型指針數(shù)組元素argv[0]與argv[1]分別指向字符串“exam”和“123”就很容易得出結(jié)論。
上述題目為使用命令行傳遞給主函數(shù)的參數(shù)起到了拋磚引玉的作用。首先,要把編寫好的C程序編譯、連接。其次,只要抓住參數(shù)的個(gè)數(shù)及每個(gè)參數(shù)的首地址,就能對(duì)參數(shù)作詳細(xì)的分析。C語(yǔ)言程序中處理的基本數(shù)據(jù)類型有整型、實(shí)型及字符型,但命令行傳遞給主函數(shù)的參數(shù)只能是字符型。若主函數(shù)處理的數(shù)據(jù)類型是字符型可直接處理,而處理數(shù)據(jù)類型是整型和實(shí)型時(shí),對(duì)于表示整型和實(shí)型的字符串就需要通過(guò)編寫程序?qū)⒆址娃D(zhuǎn)換為整型和實(shí)型。
程序設(shè)計(jì)中離不開(kāi)給變量賦初值。C語(yǔ)言程序設(shè)計(jì)中給變量賦初值的方法有輸入函數(shù)、賦值語(yǔ)句、文件提供等。這些方法給變量賦值有嚴(yán)格的規(guī)定,例如輸入函數(shù),需要格式說(shuō)明符與輸入行數(shù)據(jù)的匹配正確地給變量賦初值。再如文件給變量賦初值,需建立相應(yīng)的數(shù)據(jù)文件,賦值時(shí)還要打開(kāi)文件和關(guān)閉文件。通過(guò)命令行傳遞給主函數(shù)的參數(shù),沒(méi)有這些規(guī)定,只需按照數(shù)據(jù)表示的形式在命令行輸入即可。
命令行傳遞給主函數(shù)的參數(shù),只能是字符串。如字符串表示的是整型或?qū)嵭蛿?shù)據(jù),在參加運(yùn)算前,就需進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換程序段如下:
轉(zhuǎn)換為整型數(shù):
以上程序段假設(shè)argv[1]所指的字符串表示整型數(shù)據(jù),程序中引用變量n就是整型數(shù)。
轉(zhuǎn)換為雙精度型數(shù)據(jù)
以上程序段假設(shè)argv[1]所指的字符串表示雙精度型數(shù)據(jù)。程序中引用變量s就是雙精度的數(shù)據(jù)。
計(jì)算機(jī)數(shù)據(jù)在介質(zhì)上傳輸時(shí),由于信道熱噪聲或環(huán)境熱噪聲的干擾,使得“1”變成了“0”,“0”變成“1”,這時(shí)傳輸就發(fā)生了錯(cuò)誤。要判斷一個(gè)數(shù)據(jù)塊是否存在傳輸錯(cuò)誤,發(fā)送端必須在數(shù)據(jù)中加入一些冗余信息,使數(shù)據(jù)塊中各個(gè)比特建立某種形式的關(guān)聯(lián),接收端通過(guò)驗(yàn)證這種關(guān)聯(lián)關(guān)系是否存在,來(lái)判斷數(shù)據(jù)在傳輸過(guò)程中有沒(méi)有出錯(cuò)。常用的方法有:奇偶校驗(yàn)碼,海明碼,循環(huán)冗余碼(CRC)等。下面介紹以用循環(huán)冗余碼通過(guò)命令行傳遞給主函數(shù)的參數(shù),生成由發(fā)送端為傳遞的二進(jìn)制數(shù)據(jù)塊加上的冗余信息和接收端判斷接收到的信息量否正確。
發(fā)送端程序段:(crco.c)
以上程序在C語(yǔ)言環(huán)境下編譯、連接后生成可執(zhí)行文件crco.exe,在命令提示符下輸入可執(zhí)行文件所在的磁盤和路徑及文件,在加上傳輸數(shù)據(jù)塊及CRC多項(xiàng)式系數(shù),程序即可顯示冗余信息及傳輸?shù)男畔ⅰ?/p>
命令行舉例:
C:>C:debugcrco 10110011 10011
冗余信息=01000,傳輸?shù)男畔?1011001101000
以上程序中的CRC多項(xiàng)式為G(X)=X4+X+1,系數(shù)為10011。
接收端程序段:(crci.c)
該程序段與crco.c程序作同樣的處理即可,CRC 多項(xiàng)式為 G(X)=X4+X+1。
通過(guò)傳遞給主函數(shù)的參數(shù)作為程序處理的數(shù)據(jù),可以只按照數(shù)據(jù)形式輸入就行,不需要像輸入函數(shù)那樣有嚴(yán)格的規(guī)定,而且具有短小精悍的效果,類似于過(guò)去的DOS命令。由于經(jīng)過(guò)編譯和連接后來(lái)運(yùn)行程序,所以在沒(méi)有安裝C語(yǔ)言環(huán)境的計(jì)算機(jī)上也可直接執(zhí)行,為程序應(yīng)用提供了方便。關(guān)于傳遞給主函數(shù)參數(shù)的討論還有更復(fù)雜的內(nèi)容,如果處理的問(wèn)題復(fù)雜,參數(shù)的個(gè)數(shù)會(huì)增多,也可能根據(jù)處理的問(wèn)題變化,這樣參數(shù)轉(zhuǎn)換過(guò)程中可能用到動(dòng)態(tài)分配內(nèi)存或更復(fù)雜的轉(zhuǎn)換程序,盡管這樣,傳遞給主函數(shù)的參數(shù),為程序執(zhí)行提供了另一片天空。
[1]譚浩強(qiáng),張基溫.C語(yǔ)言程序設(shè)計(jì)教程[M](第三版).北京:高等教育出版社,2007-07.
[2]田淑清.全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程C語(yǔ)言程序設(shè)計(jì)(2010年版)[M].北京:高等教育出版社,2009-09.
[3]馮博琴.計(jì)算機(jī)網(wǎng)絡(luò)與通信[M].北京:經(jīng)濟(jì)科學(xué)出版社,2000-03.
Based on the Command Line Passing to the M ain Function Parameters of App lications
TANG Jin-yi
(Shanxi Iustifute of Mechanical and Electrical Engineering,Changzhi Shanxi 046011)
This papers based on C program design command-line transfer to themain function parameters of discussion,introduces the command-line transfer to themain function parameters,then analyzes the number and types of these parameters,and these parameters as program run data processing,solve the specific problem.
main functions;parameters;transmission;command line
TP39
A
1673-2014(2011)02-0051-03
2011—01—19
唐婧壹(1984— ),女,吉林榆樹(shù)人,碩士,主要從事計(jì)算機(jī)通信研究。
(責(zé)任編輯 李學(xué)斌)