的文件
>我在命令行中给出了一个路径,其中有一个文件名,如下所示:
./something.bin infomration /some/some2/thing.txt
我知道我可以将/some/some2/thing.txt
放入全局变量中并使用它。现在,我想:
在路径/some/some2/
中创建一个名为 thing.txt
对于这样的事情,你必须使用传递给主入口点的参数:
int main(int argc, char **argv) {
// some other code
return 0;
}
如您所见,main()
将收到两个参数:
- argc:第一个参数将包括通过第二个参数传递的参数数。
- argv:第二个参数指向指向具有实际参数的字符串的指针。
用法非常简单,但重要的是要记住,第一个"参数"是可执行文件本身。
在您的示例中,argc
将设置为 3,argv
将指向以下字符串:
- argv[0]:
./something.bin
(基于操作系统,这也可能是绝对路径) - Argv[1]:
infomration
[原文如此] - ARGV[2]:
/some/some2/thing.txt
如您所见,您所要做的就是:
- 验证参数数是否正确。
- 验证第二个参数(
infomration
)是否正确。 - 使用第三个参数接收实际文件名。
请记住,用户可能会传递无效参数(例如文件名的无效字符),或者他可能会试图诱骗您执行不应执行的操作(例如传递保留名称)。