我遇到的问题是,每当我仅输入程序名称时,条件为argc == 1的if语句将不起作用,并且在我的命令提示符下不会显示任何内容,但是在我测试它时其他if语句都将起作用我真的不确定我做错了什么,谢谢您的帮助。
我还知道塔函数正常工作,因为对于任何其他测试运行,它都会输出正确的输出,只有在未写入除程序名称以外的任何命令行参数的情况下,它才输出任何内容。
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);
}
答案 0 :(得分:0)
argc == 1
表示您没有argv[1]
,argv[2]
等。
因此,程序将无法到达argc == 1
行,因为该行之前会发生错误。
您应该取消重新排序条件。
argc <= 1
可能有助于检查参数是否通过。