getopt() เป็นหนึ่งในฟังก์ชัน C ในตัวที่ใช้สำหรับตัวเลือกบรรทัดคำสั่ง ไวยากรณ์ของฟังก์ชันนี้มีลักษณะดังนี้ −
getopt(int argc, char *const argv[], const char *optstring)
opstring คือรายชื่อตัวละคร แต่ละตัวเป็นตัวแทนของตัวเลือกอักขระตัวเดียว
ฟังก์ชันนี้ส่งกลับค่าจำนวนมาก เหล่านี้เป็นเหมือนด้านล่าง −
- หากตัวเลือกใช้ค่า ค่านั้นจะถูกชี้โดย optarg
- จะคืนค่า -1 เมื่อไม่มีตัวเลือกให้ดำเนินการอีกต่อไป
- ส่งคืน '?' เพื่อแสดงว่านี่เป็นตัวเลือกที่ไม่รู้จัก โดยจะเก็บไว้เพื่อ optopt
- บางครั้งตัวเลือกบางตัวก็ต้องการค่าบางอย่าง หากตัวเลือกนั้นมีอยู่แต่ไม่มีค่าอยู่ ก็จะคืนค่า '?' ด้วย เราสามารถใช้ ':' เป็นอักขระตัวแรกของ optstring ได้ ดังนั้นในช่วงเวลานั้น อักขระดังกล่าวจะคืนค่า ':' แทนที่จะเป็น '?' หากไม่มีค่าใดๆ ให้
ตัวอย่าง
#include <stdio.h> #include <unistd.h> main(int argc, char *argv[]) { int option; // put ':' at the starting of the string so compiler can distinguish between '?' and ':' while((option = getopt(argc, argv, ":if:lrx")) != -1){ //get option from the getopt() method switch(option){ //For option i, r, l, print that these are options case 'i': case 'l': case 'r': printf("Given Option: %c\n", option); break; case 'f': //here f is used for some file name printf("Given File: %s\n", optarg); break; case ':': printf("option needs a value\n"); break; case '?': //used for some unknown options printf("unknown option: %c\n", optopt); break; } } for(; optind < argc; optind++){ //when some extra arguments are passed printf("Given extra arguments: %s\n", argv[optind]); } }
ผลลัพธ์
Given Option: i Given File: test_file.c Given Option: l Given Option: r Given extra arguments: hello