int main(int argc, char** argc) {
.....
if(argc != 6 && int argc[1] <30 && int argc[2] <30) {
}
}
嘿人,我试图限制我的主要功能的命令行参数。这将限制输入的第二个和第三个参数的长度不超过30个整数。我收到的错误是“错误:下标值既不是数组也不是指针”。在C中,这是我如何访问每个arg,argc0,argc [1](第二个争论)等的索引值。 任何澄清都会很棒!感谢。
答案 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
,但请注意,如果用户输入非数字输入,您将获得奇怪的值