下标值既不是数组也不是指针,也不是argv的向量

时间:2014-10-22 08:08:09

标签: c ubuntu gcc terminal argc

我在终端的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;
}

2 个答案:

答案 0 :(得分:0)

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

mkdir(argc[1], 00755);

为:

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

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

对于真实程序,您还应该检查是否已提供参数,否则当用户不提供参数时您将崩溃:

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

答案 1 :(得分:0)

 mkdir(argv[1] , 00755);//try argv instead of argc

您的命令行参数仅存储在argv中,而不是argc中。 argc在命令行中不包含任何参数。请尝试使用argv