在c中输入目录作为命令行参数

在c中输入目录作为命令行参数,c,linux,command-line-interface,C,Linux,Command Line Interface,我正在建立一个程序,将目录相互复制,但我只能让它以硬编码的方式工作 我希望用户通过命令行参数输入目录 我用过 char SrcPath[] = argv[1]; 然而,当我硬编码它喜欢 char SrcPath[] = "home/user/Desktop/cat"; it works fine. 但这不起作用,有人能解释为什么/建议一种方法吗? 在CLI中使用目录时是否有特殊的输入方式?更改为char*SrcPath=argv[1]应该可以工作。指针和数组是不同的东西 更改

我正在建立一个程序,将目录相互复制,但我只能让它以硬编码的方式工作

我希望用户通过命令行参数输入目录

我用过

char    SrcPath[]    = argv[1]; 
然而,当我硬编码它喜欢

char SrcPath[] = "home/user/Desktop/cat"; it works fine. 
但这不起作用,有人能解释为什么/建议一种方法吗?
在CLI中使用目录时是否有特殊的输入方式?

更改为
char*SrcPath=argv[1]应该可以工作。指针和数组是不同的东西

更改为
char*SrcPath=argv[1]应该可以工作。指针和数组是不同的东西

更改为
char*SrcPath=argv[1]应该可以工作。指针和数组是不同的东西

更改为
char*SrcPath=argv[1]应该可以工作。指针和数组是不同的东西

argv[]
是一个字符指针数组,因此当您使用
argv[1]
时,您将获得数组中的第二项,即字符指针。正如James所建议的,如果您想存储
argv[1]
的值,这是一个内存地址,那么您必须使用相同的类型,在本例中是
char*

如果需要保存目录路径以进行任何类型的处理或操作,则需要执行类似操作以将命令行参数存储在char数组中

char srcPath[100];
int i;
for (i = 0; argv[1][i] != '\0'; i++) {
    srcPath[i] = argv[1][i];
}

数组名是指针,因此使用下标
[]
将取消对它的引用。对于存储在
argv[]

argv[]
中的字符数组也可以这样说,它是一个字符指针数组,因此当您使用
argv[1]
时,您将获得数组中的第二项,即字符指针。正如James所建议的,如果您想存储
argv[1]
的值,这是一个内存地址,那么您必须使用相同的类型,在本例中是
char*

如果需要保存目录路径以进行任何类型的处理或操作,则需要执行类似操作以将命令行参数存储在char数组中

char srcPath[100];
int i;
for (i = 0; argv[1][i] != '\0'; i++) {
    srcPath[i] = argv[1][i];
}

数组名是指针,因此使用下标
[]
将取消对它的引用。对于存储在
argv[]

argv[]
中的字符数组也可以这样说,它是一个字符指针数组,因此当您使用
argv[1]
时,您将获得数组中的第二项,即字符指针。正如James所建议的,如果您想存储
argv[1]
的值,这是一个内存地址,那么您必须使用相同的类型,在本例中是
char*

如果需要保存目录路径以进行任何类型的处理或操作,则需要执行类似操作以将命令行参数存储在char数组中

char srcPath[100];
int i;
for (i = 0; argv[1][i] != '\0'; i++) {
    srcPath[i] = argv[1][i];
}

数组名是指针,因此使用下标
[]
将取消对它的引用。对于存储在
argv[]

argv[]
中的字符数组也可以这样说,它是一个字符指针数组,因此当您使用
argv[1]
时,您将获得数组中的第二项,即字符指针。正如James所建议的,如果您想存储
argv[1]
的值,这是一个内存地址,那么您必须使用相同的类型,在本例中是
char*

如果需要保存目录路径以进行任何类型的处理或操作,则需要执行类似操作以将命令行参数存储在char数组中

char srcPath[100];
int i;
for (i = 0; argv[1][i] != '\0'; i++) {
    srcPath[i] = argv[1][i];
}

数组名是指针,因此使用下标
[]
将取消对它的引用。对于存储在
argv[]

中的char数组也可以这样说。当您尝试从命令行获取目录时,会出现什么错误?我只是得到了“无法打开目录”查找目录出错时出现的消息我想每个人都在假设,但从未提及:您知道“home/user/Desktop/cat1”是相对路径,而不是绝对路径,对吗?除非可以从程序开始的位置(根“/”处)访问该目录,否则无法将目录更改为该目录。当您尝试从命令行获取该目录时,会出现什么错误?我只得到了“无法打开目录”查找目录出错时出现的消息我想每个人都在假设,但从未提及:您知道“home/user/Desktop/cat1”是相对路径,而不是绝对路径,对吗?除非可以从程序开始的位置(根“/”处)访问该目录,否则无法将目录更改为该目录。当您尝试从命令行获取该目录时,会出现什么错误?我只得到了“无法打开目录”查找目录出错时出现的消息我想每个人都在假设,但从未提及:您知道“home/user/Desktop/cat1”是相对路径,而不是绝对路径,对吗?除非可以从程序开始的位置(根“/”处)访问该目录,否则无法将目录更改为该目录。当您尝试从命令行获取该目录时,会出现什么错误?我只得到了“无法打开目录”查找目录出错时出现的消息我想每个人都在假设,但从未提及:您知道“home/user/Desktop/cat1”是相对路径,而不是绝对路径,对吗?除非可以从程序开始的位置(根“/”处)访问该目录,否则无法将目录更改为该目录。您可以在此处详细说明:感谢您的回答,但我仍然遇到相同的问题aOpenDir=opendir(SrcPath);如果(!aOpenDir)printf(“\n错误!目录无法打开”);当我尝试执行我正在输入的程序时。/a.out“home/user/Desktop/cat1”这可能是问题所在吗?您可以在这里详细说明:谢谢您的回答