gpt4 book ai didi

命令行参数没有被正确读取

转载 作者:行者123 更新时间:2023-11-30 16:22:32 26 4
gpt4 key购买 nike

我遇到的问题是,每当我仅输入程序名称时,条件为 argc == 1 的 if 语句不起作用,并且命令提示符中不会打印任何内容,但当我测试它时,所有其他 if 语句都起作用.我真的不确定我做错了什么,谢谢你的帮助。

我也知道 towers 函数工作正常,因为对于我所做的任何其他测试运行,它都会打印正确的输出,只有当除了程序名称之外没有写入命令行参数时,它才不会打印任何内容。

int main(int argc, char **argv) {

int n;
int from;
int dest;

if ((atoi(argv[2]) > 3) || (atoi(argv[3]) > 3)) {
fprintf(stderr, "Cant have more than 3 towers.");
exit(1);
} else
if ((atoi(argv[1]) < 0)) {
fprintf(stderr, "Cant have negative number of disks.");
exit(1);
} else
if (argc == 1){
fprintf(stderr, "No command line argument was given./n");
n = 3;
from = 1;
dest = 2;
} else
if (argc == 2){
fprintf(stderr, "One command line argument was given\n");
n = atoi(argv[1]);
from = 1;
dest = 2;
} else
if (argc == 4) {
fprintf(stderr, "Three command line arguments were given\n");
n = atoi(argv[1]);
from = atoi(argv[2]);
dest = atoi(argv[3]);
}

towers(n, from, dest);

exit(0);
}

最佳答案

argc == 1意味着你没有 argv[1] , argv[2]等等

所以,程序不会到达argc == 1行,因为错误发生在该行之前。

您应该重新订购条件。

argc <= 1可能有助于检查参数是否未通过。

关于命令行参数没有被正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385149/

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