[英]Segmentation Fault With argv
我有一个程序,该程序从命令行读取单个参数并对其执行某些操作。 我正在使用argv和argc。 当我无法将参数传递给程序时,它会出现段错误。 我试过检查argc是否不是某个值,然后将其打印出来,但它仍然存在段错误。 这是有问题的代码。 请注意,它在传递单个参数时按预期工作。 这是有问题的代码:
int main(int argc, char *argv[])
{
int numTimes = atoi(argv[1]); //converts content of argv[1] into integer
if(argc != 2)
{
printf("Enter a valid integer.");
}
在尝试访问该参数之前,需要检查argc
。 只需将argc
测试移至调用atoi(argv[1])
之前的某个时间。
在尝试访问特定元素之前,只需检查参数数量即可。 像这样:
int main(int argc, char *argv[])
{
if(argc < 2)
{
printf("Enter a valid integer.");
return 0;
}
int numTimes = atoi(argv[1]); // now we're sure to have at least 1 argument passed
// ...
}
您必须先进行检查, 然后再尝试访问参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.