在 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?
我编写此代码是为了从命令行获取输入,并根据输入执行一组操作,或者如果输入不正确,则会引发错误。但是,我还需要检查是否没有提供任何参数,我试图在我的 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?