Getopt () là một trong những hàm C tích hợp được sử dụng để thực hiện các tùy chọn dòng lệnh. Cú pháp của hàm này như sau -
getopt(int argc, char *const argv[], const char *optstring)
Chuỗi opstring là một danh sách các ký tự. Mỗi người trong số họ đại diện cho một tùy chọn ký tự duy nhất.
Hàm này trả về nhiều giá trị. Những thứ này giống như bên dưới -
- Nếu tùy chọn nhận một giá trị thì giá trị đó sẽ được trỏ bởi optarg.
- Nó sẽ trả về -1, khi không còn tùy chọn để xử lý
- Trả về dấu ‘?’ để cho thấy rằng đây là một tùy chọn không được công nhận, nó sẽ lưu trữ nó để từ chối.
- Đôi khi một số tùy chọn cần một số giá trị, Nếu tùy chọn có nhưng các giá trị không có ở đó, thì nó cũng sẽ trả về ‘?’. Chúng tôi có thể sử dụng ‘:’ làm ký tự đầu tiên của chuỗi optstring, vì vậy trong thời gian đó, nó sẽ trả về ‘:’ thay vì ‘?’ Nếu không có giá trị nào được đưa ra.
Ví dụ
#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]); } }
Đầu ra
Given Option: i Given File: test_file.c Given Option: l Given Option: r Given extra arguments: hello