我正在使用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/