使用argv进行分段错误

时间:2012-03-27 18:48:34

标签: c++ c argv argc

我有一个程序从命令行读入一个参数并对其执行某些操作。我正在使用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.");
}

3 个答案:

答案 0 :(得分:6)

您需要在之前检查argc ,然后尝试访问该参数。在调用argc之前,只需将atoi(argv[1])测试移至某个时间。

答案 1 :(得分:5)

在尝试访问特定元素之前,只需检查参数的数量。像这样:

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

    // ...
}

答案 2 :(得分:2)

您必须在尝试访问参数之前检查