比方說,我做的是被稱爲像這樣一個C程序:的Getopt - 文件名作爲參數
./something -d dopt filename
所以-d
是一個命令,dopt
是一個可選參數-d
和filename
是一個參數./something
,因爲我也可以撥打./something filename
。
什麼是getopt
窗體來表示獲取文件名?
比方說,我做的是被稱爲像這樣一個C程序:的Getopt - 文件名作爲參數
./something -d dopt filename
所以-d
是一個命令,dopt
是一個可選參數-d
和filename
是一個參數./something
,因爲我也可以撥打./something filename
。
什麼是getopt
窗體來表示獲取文件名?
使用通常的方式optstring "d:"
捕捉-d dopt
與optarg
。然後看看optind
(與argc
比較),它告訴你是否還有任何非選項參數。如果是這樣,你的文件名是第一個。
getopt
沒有具體告訴你什麼是非選項參數或檢查數字。它只是告訴你它們從哪裏開始(如果你處於GNU的非嚴格POSIX模式,首先將它們移動到參數數組的末尾)
檢查如何grep does it。在main()
末,你會發現:
if (optind < argc)
{
do
{
char *file = argv[optind];
// do something with file
}
while (++optind < argc);
}
的optind
是由getopt的發現命令行選項的數量。所以這個條件/循環結構可以處理用戶列出的所有文件。
這裏沒有一個。 'getopt'獲取_options_,'filename'不在這種情況下(這對於你所顯示的命令的兩個調用都是必需的)。 – ldav1s