gpt4 book ai didi

命令行参数 : use of space between program argument, 和参数的参数

转载 作者:行者123 更新时间:2023-12-02 08:58:19 24 4
gpt4 key购买 nike

在这里,我有一个程序,它接受参数(多么令人惊讶......)。我希望他有几个论据,例如:

./myprogram -f filename.txt -x -o

所以我想要带有“-”的主参数,并且这些参数应接受其他参数,在示例中是文件名。

我有这个结构,非常简单:

int main(int argc, char *argv[])
{
printf("Program name: %s\n", argv[0]);

while ((argc > 1) && (argv[1][0] == '-'))
{
switch (argv[1][1])
{
case 'f':
printf("%s\n",&argv[1][3]);
break;

case 'd':
printf("%s\n",&argv[1][2]);
printf("%s\n",&argv[1][2]);
break;

default:
printf("Wrong Argument: %s\n", argv[1]);
usage();
}

++argv;
--argc;
}


return 0;
}

如您所见,在 -d 的情况下,这会打印参数后面的内容,不带空格;这是一个示例输出:

./myprogram -dfilename
Program name: myprogram
filename
filename

并使用 -f 参数,

./myprogram -f filename
Program name: myprogram
ffilename

它打印了第一个字母两次,我不明白为什么。有人可以帮忙吗?

最佳答案

argv 包含一个字符串数组。 argv[0] 包含程序名称,argv[1] 包含 -f (在您的情况下),argv[2] 包含 文件名。如果打印 argv[1][3],则打印从 -f第三个​​字母开始的字符串。不存在这样的事情,因此行为未定义。

关于命令行参数 : use of space between program argument, 和参数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com