从c中终端的执行行输入

时间:2011-11-30 09:58:20

标签: c terminal line

我遇到的问题是我必须在c中编写一个hanois塔游戏,并且环的数量输入不得在程序中,但代码必须读取执行中的响铃次数。

示例: ./ hanoistower 3

代码应该输入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),那么您有一个额外的论点,所以

  1. argc == 2
  2. argv[0]"./hanoistower"字符串
  3. argv[1]"2"字符串(使用atoi将其转换为int
  4. argv[2]NULL
  5. 请学习使用调试器(Linux上的gdb)。

答案 2 :(得分:0)

只需将argcargv添加到main方法参数列表中,如下所示:

int main ( int argc, char *argv[] )

然后使用argv作为变量来指定代码中的响铃次数。