在 C 中检查命令行参数

Checking for command line arguments in C

我编写此代码是为了从命令行获取输入,并根据输入执行一组操作,或者如果输入不正确,则会引发错误。但是,我还需要检查是否没有提供任何参数,我试图在我的 else 语句中说明这一点。

if(strcmp(argv[1], "-L") == 0) 
{
    //does stuff
}


else if(strcmp(argv[1], "-W") == 0)
{

    //does stuff

}

else if (*(argv[1]) != 1)
{
    puts("error: invalid input");
}

else //should check if no arguments
{
    puts("error: expected command line argument");
    return 1;
}

只要命令行中没有参数,我就会遇到分段错误,我不确定如何修复它。我也试过这样写else语句:

else if(argc < 2)
{
    puts("error: expected command line argument");
    return 1;
}

这是基于我之前在这里的研究,我发现 "C produce error if no argument is given in command line," 但它也不起作用。我是 C 的初学者,并不完全理解 argc 和 argv,所以如果有人有任何建议或我完全忽略的逻辑,请告诉我。

您需要先检查 if argc < 2

否则您会遇到分段错误,因为 argv[index] 可能是您无权访问的内容。

无论您做什么,请确保您永远不会尝试访问大于或等于 argc 的 argv 索引。在您的情况下,当最后一个可用索引为 0(argc 为 1)时,您正在访问索引 1,这就是分段错误的原因。有关详细信息,请参阅此 post:What does int argc, char *argv[] mean?