我想讓getopt與我的C程序一起工作,但是我發現它不工作。 這裏是行不通getopt立即退出循環
char* getFlagArg(int argc, char **argv, char flag) {
extern char *optarg;
extern int optind, optopt, opterr;
char opt;
char options[3] = {flag,':',0};
while((opt = getopt(argc, argv, options)) != -1) {
if(opt == flag)
return optarg;
}
return "";
}
當我運行這段代碼,它會立即退出循環(循環不運行,即使一次)的功能。我無法弄清楚爲什麼會發生這種情況。我已經證實argc,argv和options是我所期望的。思考?謝謝,麻煩您了!
「我已經證實,argc,argv和選項都是我所期望的。」 - 你期望他們是什麼? – mafso 2014-09-19 00:05:36
從代碼中,它表明你正試圖找到一個特定的標誌選項。什麼是用來啓動程序的命令行?當你輸入這個函數時,'optind'的值是多少?當函數退出時,'optind'的值是多少? – 2014-09-19 00:52:30
命令行顯示「./a。出-u用戶文件名的argc,argv的「在程序 年底通過 OPTIND == 3‘和選項都是什麼,我希望他們是’我的意思是ARGC = 4,ARGV =」 ./a。去」,‘-u’,‘用戶’,‘文件名’],和標誌=‘U’,所以參數都獲得通過在正確的。 – Nero144 2014-09-19 01:26:03