输入目录作为c中的命令行参数
input directory as command line arguement in c
我正在构建一个相互复制目录的程序,但我只能通过硬编码让它工作。
我希望用户通过命令行参数输入目录。
我用过
char SrcPath[] = argv[1];
然而当我硬编码时
char SrcPath[] = "home/user/Desktop/cat"; it works fine.
但这行不通,有人可以解释为什么/建议一种方法吗?
在 CLI 中使用时,是否有一种特殊的方式必须输入目录?
对 char *SrcPath = argv[1];
的更改应该有效。指针和数组是不同的东西!
argv[]
是一个字符指针数组,因此当您使用 argv[1]
时,您将获得数组中的第二项,它是一个字符指针。正如詹姆斯建议的那样,如果你想存储 argv[1]
的值,这是一个内存地址,你必须使用相同的类型,在这种情况下是 char *
.
如果您需要为任何类型的处理或操作保存目录路径,您将需要执行类似这样的操作以将命令行参数存储在一个字符数组中。
char srcPath[100];
int i;
for (i = 0; argv[1][i] != '[=10=]'; i++) {
srcPath[i] = argv[1][i];
}
数组名称是指针,因此使用下标 []
取消引用它。对于存储在 argv[]
中的字符数组也可以这样说
我正在构建一个相互复制目录的程序,但我只能通过硬编码让它工作。
我希望用户通过命令行参数输入目录。
我用过
char SrcPath[] = argv[1];
然而当我硬编码时
char SrcPath[] = "home/user/Desktop/cat"; it works fine.
但这行不通,有人可以解释为什么/建议一种方法吗? 在 CLI 中使用时,是否有一种特殊的方式必须输入目录?
对 char *SrcPath = argv[1];
的更改应该有效。指针和数组是不同的东西!
argv[]
是一个字符指针数组,因此当您使用 argv[1]
时,您将获得数组中的第二项,它是一个字符指针。正如詹姆斯建议的那样,如果你想存储 argv[1]
的值,这是一个内存地址,你必须使用相同的类型,在这种情况下是 char *
.
如果您需要为任何类型的处理或操作保存目录路径,您将需要执行类似这样的操作以将命令行参数存储在一个字符数组中。
char srcPath[100];
int i;
for (i = 0; argv[1][i] != '[=10=]'; i++) {
srcPath[i] = argv[1][i];
}
数组名称是指针,因此使用下标 []
取消引用它。对于存储在 argv[]