gpt4 book ai didi

c - 在 C 中使用 getopt() 和 switch 语句

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:54 26 4
gpt4 key购买 nike

我是 C 的新手,正在尝试将 getopt 与 switch 语句结合使用。我认为我的问题只是语法问题,但我似乎无法弄清楚。我需要像这样运行我的程序:$/webserver -p 8080 -r/my/root/dir。所以我需要识别 -p 并获取 8080,识别 -r 并获取/my/root/dir。目前我的代码找到 -p,然后找到 -r,然后检测到未知选项并退出。这是代码。我有 puts() 用于测试。

   #define USAGE_STRING "Usage: webserver -p <port> -r  <rootdir>\n"
char *port;
char *rootdir;
// Process command line arguments. Uses GNU getopt() function.
void processargs(int argc, char **argv) {
int next_option;
do {
next_option = getopt(argc, argv, "pr:");
if (next_option != -1) {
switch (next_option)
{
case 'p': /* -p -- port option */
puts("p");

port = optarg;
printf("%s", port);
case 'r': // -r -- root directory option
puts("r");
rootdir = optarg;
printf("%s", rootdir);
default:
puts("unknown");
/* Unknown option detected. Print it to standard
output, and exit with exit code zero (normal termination). */
fprintf(stderr, USAGE_STRING);
exit(1);

}
}
} while (next_option != -1);
printf("%s", port);

if (port == NULL) {

fprintf(stderr, USAGE_STRING);
exit(1);
}
if (rootdir == NULL) {
puts("unknown");
fprintf(stderr, USAGE_STRING);
exit(1);
}


}

目前,当我运行上述命令时,我得到了这个输出(使用 puts 进行测试)。

p
r
unknown
Usage: webserver -p <port> -r <rootdir>

感谢您的帮助!

最佳答案

我相信您想在每个案例的末尾使用 break,否则执行会进入下一个案例 block 。

关于c - 在 C 中使用 getopt() 和 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com