c - 为什么我的getopt永远不会进入默认情况?

标签 c

我正在使用get opt将命令行参数添加到我的程序中。 -l和-s可以正常工作,但是当我不传递任何参数时,它只是退出程序而不是使用Library_Call。

int main(int argc, char* argv[]){

    int flag = -1, choice; //Setting a flag variable to differenciate btw lib or sys call
    while((choice = getopt(argc, argv, "ls")) != -1){   //Reference from Geeks4Geeks:                                                  
        switch(choice){                                //https://www.geeksforgeeks.org/getopt-function-in-c-to-parse-command-line-arguments/                     
            case 'l':
            flag = Library_Call;    
            break;
            case 's':
            flag = System_Call;
            break;    
            default:
            flag = Library_Call;
        }
    }

最佳答案

这就是getopt的工作方式。解析所有输入参数后,它将返回-1

如果没有参数,则没有要解析的内容,因此它将立即返回-1,从而结束循环。

要解决将变量设置为某些默认值的问题,请首先初始化变量:

int flag = Library_Call;

关于c - 为什么我的getopt永远不会进入默认情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011468/

相关文章:

c - 如何从 C 字符串中提取数字?

c - 使用大量节点后 malloc 失败

将冗长的 if...else if...else... block 转换为开关

c - 根据命令行参数将值设置为 true 或 false

c - memcpy 的奇怪结果

c - 没有与连接的串行端口通信?

c - C 中的递归阶乘程序困惑

c - 包含在 C 语言中的通用头文件

c - scanf()如何返回EOF?

c - 强制编译器使用 Intrinsics 中的内存操作数