int main(int argc, char** argc) {
.....
if(argc != 6 && int argc[1] <30 && int argc[2] <30) {
}
}
大家好,我正在尝试对main函数的命令行参数进行字符限制。这将限制输入的第二个和第三个参数的长度不超过30个整数。我收到的错误是“错误:下标的值既不是数组也不是指针”。在C中,这是我访问每个arg,argc0,argc1等的索引值的方式吗?任何澄清都好!谢谢。
发布于 2014-08-05 13:47:52
变化
if(argc != 6 && int argc[1] <30 && int argc[2] <30)
至
if(argc != 6 && strlen (argv[1]) <30 && strlen (argv[2]) <30)
char* argv[]是关于参数的。
发布于 2014-08-05 13:57:25
试试这个:
int main(int argc, char** argv)
{
//...
if(argc != 6 && strlen(argv[1]) < 30 && strlen(argv[2]) < 30)
{
//do stuff
}
}
首先,你有两个名为argc
的参数,这是不正确的,但我假设这只是一个打字错误。
其次,argv
是一个指向字符串的指针(它本身就是一个指向字符的指针)。这意味着在没有其他函数调用或强制转换的情况下,不能将其值与整数进行比较。在本例中,我假设您的意思是希望将参数长度限制在30个字符以内。
如果您不想根据参数的长度而不是值来限制参数,则需要使用函数调用来获取字符串中的值。
例如,如果您想根据参数的数值限制参数,那么可以用atoi
替换strlen
,但是要注意,如果用户输入非数值输入,您将得到奇怪的值。
https://stackoverflow.com/questions/25140369
复制相似问题