我编写此代码以从命令行获取输入,并根据输入执行一组操作,或者如果输入不正确,则会引发错误。但是,我还需要检查是否没有提供参数,我试图在我的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错误”,但它也不起作用。我是C语言的初学者,并不完全理解argc和argv,所以如果有人有任何建议或逻辑我完全忽视,请告诉我。
答案 0 :(得分:2)
您需要先检查if argc < 2
。
否则会出现分段错误,因为argv[index]
可能是您无法访问的权限。
答案 1 :(得分:0)
无论你做什么,请确保永远不要尝试访问argv的索引,该索引大于或等于argc。在您的情况下,当最后一个可用索引为0(argc为1)时,您正在访问索引1,这就是分段错误的原因。有关详情,请参阅此帖子:What does int argc, char *argv[] mean?