实现一个函数,解析命令行参数。输入参数h、s、o、p,其中h和s二选一,o必须跟参数option、p参数可选。
时间: 2024-03-05 08:49:52 浏览: 85
下面是一个简单的C语言实现,可以解析命令行参数h、s、o、p,其中h和s二选一,o必须跟参数option、p参数可选:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
char opt;
char *option = NULL;
int p_flag = 0;
while ((opt = getopt(argc, argv, "hs:o:p")) != -1) {
switch (opt) {
case 'h':
printf("Help message.\n");
break;
case 's':
printf("Option s with value %s.\n", optarg);
break;
case 'o':
option = optarg;
printf("Option o with value %s.\n", option);
break;
case 'p':
p_flag = 1;
printf("Option p is set.\n");
break;
default:
printf("Invalid option.\n");
exit(EXIT_FAILURE);
}
}
if (optind < argc) {
printf("Non-option arguments:");
while (optind < argc)
printf(" %s", argv[optind++]);
putchar('\n');
}
if (option == NULL) {
printf("Option o is required.\n");
exit(EXIT_FAILURE);
}
if (p_flag)
printf("Option p is set.\n");
return 0;
}
```
在命令行中运行该程序时,可以使用以下命令行参数:
```
-h 显示帮助信息
-s value 选项s,后跟值value
-o option 选项o,后跟值option
-p 选项p,没有参数
```
例如,运行 `./program -s hello -o world -p file1 file2` 将会输出:
```
Option s with value hello.
Option o with value world.
Option p is set.
Non-option arguments: file1 file2
```
阅读全文