命令行参数修改 - C编程

时间:2014-08-05 13:45:27

标签: c if-statement command-line arguments

int main(int argc, char** argc) {

.....


if(argc != 6 && int argc[1] <30 && int argc[2] <30) {
    }
}

嘿人,我试图限制我的主要功能的命令行参数。这将限制输入的第二个和第三个参数的长度不超过30个整数。我收到的错误是“错误:下标值既不是数组也不是指针”。在C中,这是我如何访问每个arg,argc0,argc [1](第二个争论)等的索引值。 任何澄清都会很棒!感谢。

2 个答案:

答案 0 :(得分:4)

更改
if(argc != 6 && int argc[1] <30 && int argc[2] <30)

 if(argc != 6 && strlen (argv[1]) <30 && strlen (argv[2]) <30)

char * argv []是关于参数的。

答案 1 :(得分:2)

试试这个:

int main(int argc, char** argv)
{
    //...
    if(argc != 6 && strlen(argv[1]) < 30 && strlen(argv[2]) < 30)
    {
        //do stuff
    }
}

首先,你有两个名为argc的参数,这些参数不正确,但是假设这只是一个错字。

其次,argv是一个指向字符串的指针(它本身就是一个指向char的指针)。这意味着如果没有其他函数调用或强制转换,您无法将其值与整数进行比较。在这种情况下,我假设你的意思是你想将你的参数限制为30个字符。

如果你不想根据长度但是它们的值来限制你的参数,你需要使用函数调用来获取字符串中的值。

例如,如果您想根据参数的数值限制参数,请将strlen替换为atoi,但请注意,如果用户输入非数字输入,您将获得奇怪的值