首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >命令行参数修改-C编程

命令行参数修改-C编程
EN

Stack Overflow用户
提问于 2014-08-05 21:45:27
回答 2查看 512关注 0票数 0
代码语言:javascript
运行
复制
int main(int argc, char** argc) {

.....


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

大家好,我正在尝试对main函数的命令行参数进行字符限制。这将限制输入的第二个和第三个参数的长度不超过30个整数。我收到的错误是“错误:下标的值既不是数组也不是指针”。在C中,这是我访问每个arg,argc0,argc1等的索引值的方式吗?任何澄清都好!谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-08-05 21: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[]是关于参数的。

票数 4
EN

Stack Overflow用户

发布于 2014-08-05 21:57:25

试试这个:

代码语言:javascript
运行
复制
int main(int argc, char** argv)
{
    //...
    if(argc != 6 && strlen(argv[1]) < 30 && strlen(argv[2]) < 30)
    {
        //do stuff
    }
}

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

其次,argv是一个指向字符串的指针(它本身就是一个指向字符的指针)。这意味着在没有其他函数调用或强制转换的情况下,不能将其值与整数进行比较。在本例中,我假设您的意思是希望将参数长度限制在30个字符以内。

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

例如,如果您想根据参数的数值限制参数,那么可以用atoi替换strlen,但是要注意,如果用户输入非数值输入,您将得到奇怪的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25140369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档