一、執行ees_test
原始的輸入方式
a. 首先進入可執行檔案所在的目錄
cd /home/lihaoliang/eclipse-workspace/nichebreadth/default
b. 執行可執行檔案,並附帶引數
./nichebreadth /home/lihaoliang/ees_test scenario.seed_1.dispersal_good.nb_medium /home/lihaoliang/ees_test/results 64000 1 1 1
表1: 引數列表
numpara
value
1base_folder
/home/lihaoliang/ees_test
2scenario_config
scenario.seed_1.dispersal_good.nb_medium
3result_folder
/home/lihaoliang/ees_test/results
4memory_limit(in m)
64000
5is_overwrite16
with_detail17
is_sqlite
1使用get_optlong()函式
numpara
value
預設值1
base_folder
b/home/lihaoliang/ees_test
2scenario_config
escenario.seed_1.dispersal_good.nb_medium
3result_folder
r/home/lihaoliang/ees_test/results
4memory_limit(in m)
m64000
5is_overwritev1
6with_detaild1
7is_sqlites1
code
int
main
(int argc,
char
*ar**)
,// 1
,// 2
,// 3
,// 4
,// 5
,// 6
,// 7,}
;char base_folder[
100]
;char scenario_id[
100]
;char result_folder[
100]
;unsigned
long memory_limit =
64000
;bool is_overwrite =1;
bool with_detail =1;
bool is_sqlite =1;
while
((opt =
getopt_long
(argc,ar**,optstring,longopts,
&option_index))!=
-1)switch
( opt )
else
break;}
case
'v':
// is_overwrite
printf
("optarg=%s\n"
,optarg )
; temp =
atoi
(optarg)
;printf
("temp=%d\n"
, temp);if
(temp ==0)
break
;case
'd':
// with_detail
temp =
atoi
(optarg);if
(temp ==0)
break
;case
's':
// is_sqlite
temp =
atoi
(optarg);if
(temp ==0)
break
;case
'h':
/* fall-through is intentional */
case
'?':
display_usage()
;break
;case0:
/* long option without a short arg */
printf
("err!\n");
break
;default
:/* you won't actually get here. */
break;}
}printf
("\n*\nresult\n*\n");
printf
("base_folder: %s\n"
, base_folder )
;printf
("scenario_config: %s\n"
, scenario_id )
;printf
("result_folder: %s\n"
, result_folder )
;printf
("memory_limit: %ld\n"
, memory_limit )
;printf
("is_overwrite: %d\n"
, is_overwrite )
;printf
("with_detail: %d\n"
, with_detail )
;printf
("is_sqlite: %d\n"
, is_sqlite )
;return exit_success;
}
先定框架,在不斷細節化!
改變後指令
./nichebreadth ./nichebreadth -b /home/lihaoliang/ees_test -e scenario.seed_1.dispersal_good.nb_medium -r /home/lihaoliang/ees_test/results -m 64000 -v 1 -d 1 -s 1
用getopt處理main函式的引數
在c語言中,main函式的宣告如下 int main int argc,char argv argc是指程式引數的個數,包括程式名本身,如果程式不帶引數,argc為1 argv的每個陣列元素存放乙個程式引數,程式名存放在argv 0 例如 ls l 此時,argc為2,argv 0 是ls,argv...
getopt 函式的使用
每一天你都在使用大量的命令列程式,是不是感覺那些命令列引數用起來比較方便,他們都是使用getopt來實現的。在linux下使用getopt寫程式是一種比較方便的事情,下面來簡單的介紹一下getopt的使用。在討論引數處理之前,我們先明確兩個概念 選項 選項引數 gcc g o test test.c...
C函式getopt使用
getopt 分析命令列引數 相關函式表頭檔案 include 定義函式 int getopt int argc,char const argv const char optstring 函式說明 getopt 用來分析命令列引數。引數argc和argv是由main 傳遞的引數個數和內容。引數opt...