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

时间:2015-04-23 02:13:59

标签: c linux command-line-interface

我正在构建一个程序,将目录彼此复制,但我只能让它进行硬编码。

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

我用过

char    SrcPath[]    = argv[1]; 

然而,当我硬编码像

char SrcPath[] = "home/user/Desktop/cat"; it works fine. 

但是这不起作用,任何人都可以解释为什么/建议这样做的方法吗? 并且有一种特殊的方式,在CLI中使用时必须输入目录吗?

2 个答案:

答案 0 :(得分:3)

char *SrcPath = argv[1];进行更改应该有效。指针和数组是不同的东西!

答案 1 :(得分:0)

argv[]是一个char指针数组,因此当你使用argv[1]时,你将获得数组中第二个作为char指针的项。正如James建议的那样,如果你想存储argv[1]这个内存地址的值,你必须使用相同的类型,在这种情况下是char *

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

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

数组名是指针,因此使用下标[]取消引用它。 char数组也是如此,它存储在argv[]