C 带argv的下标值既不是数组,也不是指针或向量
我在终端的ubuntu中有这个代码.c 但是当我用gcc编译它时,出现了这个错误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(表示参数数量的
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