cuốn sách gpt4 ai đã làm

Làm cách nào để xác định rằng tham số tùy chọn bắt buộc bị thiếu?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:09:22 26 4
mua khóa gpt4 Nike

Trên máy GNU/Linux tôi sử dụng getopt_long. Khởi tạo danh sách tùy chọn thành:

tùy chọn cấu trúc tĩnh long_options[] = {
{"chế độ", require_argument, 0, 9},
{0, 0, 0, 0}
};

Có những dòng mã sau

c = getopt_long(argc, argv, "", long_options, index_ptr);

Khi tôi chạy chương trình của mình bằng lệnh:

prog --mode

Dòng mã hiển thị ở trên trả về "?" trong c, nhưng không theo nhận được(3) Trang Man được mong đợi ':':"Lỗi và kết quả trả về -1 giống với getopt()"

Có, khi sử dụng/phân tích các tùy chọn ngắn, có thể viết một cái gì đó như ":m:" trong danh sách tùy chọn để biến cho đối số bị thiếu c sẽ chứa ://: thay vì "?", nhưng khi phân tích cú phápLàm cách nào để phân biệt hai tình huống (thiếu tham số, tùy chọn không hợp lệ) khi có tùy chọn dài?

Làm cách nào để phân biệt giữa các tùy chọn không hợp lệ và các tùy chọn thiếu tham số bắt buộc?

câu trả lời hay nhất

Cách duy nhất tôi có thể thấy để thực hiện phân biệt giữa các tùy chọn không hợp lệ và các tùy chọn hợp lệ với các đối số bị thiếu là chuyển đổi cấu trúc tùy chọn has_arg Trường được đặt thành tùy chọn_đối số , sau đó kiểm tra các tham số theo cách thủ công. Sau đó getopt_long() sẽ chỉ trả về giá trị '?' khi có tùy chọn không hợp lệ, bạn có thể thực hiện việc này bằng cách xem quang học để kiểm tra xem tùy chọn đã chỉ định có tham số hay không. Đây là một ví dụ:

#include 
#include
#include

int main(int argc, char *argv[])
{
int tôi, chọn;
chỉ số int = -1;

tùy chọn cấu trúc tĩnh long_options[] = {
{"chế độ", tùy chọn_argument, NULL, 'm'},
{0, 0, 0, 0}
};

/* chặn các thông báo lỗi */
//opterr = 0;

while ((opt = getopt_long(argc, argv, "", long_options, &index)) != -1) {
if (opt == '?') {
/* có lẽ nên làm gì đó: */
//printf("Tùy chọn không hợp lệ\n");
//thoát (EXIT_FAILURE);
}
if (opt == 'm' && optarg == NULL) {
printf("Thiếu tham số trong tùy chọn '--mode'\n");
thoát (EXIT_FAILURE);
}
}

return 0;
}

Về c - Làm cách nào để xác định rằng đối số tùy chọn bắt buộc bị thiếu? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/40163234/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress