1

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

3 回答 3

7

在尝试访问该参数argc 之前,您需要进行检查。只需将argc测试移至您致电之前的某个时间即可atoi(argv[1])

于 2012-03-27T18:49:28.087 回答
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

    // ...
}
于 2012-03-27T18:50:53.620 回答
2

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

于 2012-03-27T18:49:45.147 回答