Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带argv的下标值既不是数组,也不是指针或向量_C_Ubuntu_Gcc_Terminal_Argc - Fatal编程技术网

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

C 带argv的下标值既不是数组,也不是指针或向量,c,ubuntu,gcc,terminal,argc,C,Ubuntu,Gcc,Terminal,Argc,我在终端的ubuntu中有这个代码.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; } 您混淆了argc(表示参数数量的

我在终端的ubuntu中有这个代码.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;
}

您混淆了
argc
(表示参数数量的int)和
argv
(包含命令行参数的字符串数组)。更改:

致:

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

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

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

命令行参数仅存储在
argv
中,而不存储在
argc
中<代码>argc在命令行中不包含任何参数。因此,尝试使用
argv

没有任何变化!是的,argc为假,但00755为真:)您是否将
argc
更改为
argv
,保存并重新编译?是的,您是对的:)argv是正确的,但0没有问题您的意思是从
00755
更改为
0755
?我刚刚修复了这个问题,因为额外的
0
是多余的-您只需要一个
0
前缀来表示八进制。
mkdir(argv[1], 0755);
      ^^^^^^^
if (argc > 1)
{
    mkdir(argv[1], 0755);
}
 mkdir(argv[1] , 00755);//try argv instead of argc