我正在构建一个程序,将目录彼此复制,但我只能让它进行硬编码。
我希望用户通过命令行参数输入目录。
我用过
char SrcPath[] = argv[1];
然而,当我硬编码像
char SrcPath[] = "home/user/Desktop/cat"; it works fine.
但是这不起作用,任何人都可以解释为什么/建议这样做的方法吗? 并且有一种特殊的方式,在CLI中使用时必须输入目录吗?
答案 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[]