我遇到的问题是我必须在c中编写一个hanois塔游戏,并且环的数量输入不得在程序中,但代码必须读取执行中的响铃次数。
示例: ./ hanoistower 3
代码应该输入3作为输入。我怎么能这样做?
答案 0 :(得分:4)
命令行参数通过C程序的main()函数传播为字符串。
在int main(int argc, char *argv[])
中,argc是参数的数量,而argv是包含参数的字符串数组。请注意,程序名称本身始终是第一个“参数”。
由于参数作为字符串传递,您可能需要将3
转换为整数,这可以使用atoi
函数完成。这是一个开始:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int rings;
if(argc != 2) {
printf("Usage: %s number-of-rings\n",argv[0]);
return 1;
}
rings = atoi(argv[1]);
printf("Using number-of-rings = %d\n", rings);
...
return 0;
}
答案 1 :(得分:2)
我强烈建议您阅读一本优秀的C编程书。这比在这里提问要快得多。
Hovever,程序参数作为主要函数的空终止字符串数组给出,通常声明为
int main (int argc, char**argv) { /*...*/ }
如果您使用./hanoistower 3
运行程序,并且您的hanoistower.c
是您的源代码(需要在启用调试和警告的情况下进行编译,即Linux上的gcc -Wall -g hanoistower.c -o hanoistower
),那么您有一个额外的论点,所以
argc == 2
argv[0]
是"./hanoistower"
字符串argv[1]
是"2"
字符串(使用atoi
将其转换为int
)argv[2]
是NULL
请学习使用调试器(Linux上的gdb
)。
答案 2 :(得分:0)
只需将argc
和argv
添加到main
方法参数列表中,如下所示:
int main ( int argc, char *argv[] )
然后使用argv
作为变量来指定代码中的响铃次数。