【问题标题】:subscripted value is neither array nor pointer nor vector with argv带 argv 的下标值既不是数组也不是指针也不是向量
【发布时间】:2014-12-17 15:10:19
【问题描述】:

我在终端的 ubuntu 中有这个 code.c 但是当我用 gcc 编译它时出现了这个错误

cod2.c: In function ‘main’:
cod2.c:9:11: error: subscripted value is neither array nor pointer nor vector

这是为什么呢?

int  main(int argc , char ** argv){
    mkdir(argc[1] , 00755);
    return 0;
}

【问题讨论】:

    标签: c ubuntu gcc terminal argc


    【解决方案1】:

    您对argc(一个表示参数数量的int)和argv(一个包含命令行参数的字符串数组)感到困惑。变化:

    mkdir(argc[1], 00755);
    

    到:

    mkdir(argv[1], 0755);
          ^^^^^^^
    

    (请注意,我还从00755 中删除了一个多余的0 前缀以使其成为0755 - 您只需要一个0 前缀来表示八进制基数。)

    对于一个真实的程序,你还应该检查是否提供了参数,否则当用户不提供参数时你会崩溃:

    if (argc > 1)
    {
        mkdir(argv[1], 0755);
    }
    

    【讨论】:

    • 什么都没有改变!是的 argc 是假的,但 00755 是真的 :)
    • 你是不是把argc改成argv,保存重新编译?
    • 是的,你是对的 :) argv 是正确的,但 0 没有问题
    • 您的意思是从00755 更改为0755 ?我刚刚解决了这个问题,因为额外的 0 是多余的 - 你只需要一个 0 前缀来表示八进制基数。
    【解决方案2】:
     mkdir(argv[1] , 00755);//try argv instead of argc
    

    您的命令行参数仅存储在argv,而不是argcargc 在命令行中不包含任何参数。所以试试argv

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多