我遇到的问题是,每当我仅输入程序名称时,条件为 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/