Input from the execution line in the terminal in c

 ̄綄美尐妖づ 提交于 2019-12-25 02:42:54

问题


The problem that i have is that i have to write a hanois tower game in c and the input for the number of the rings must not be in the programm but the code must read the number of rings in the execution.

Example: ./hanoistower 3

And the code should get the 3 as the input. How can i do that?


回答1:


Command line arguments are propagated as strings through the main() function of your C program.

In int main(int argc, char *argv[]) argc is the number of arguments, and argv is an array of strings containing the arguments. Note that the program name itself is always the first "argument".

As the arguments are passed as strings, you likely need to convert your 3 to an integer, which can be done with the atoi function. Here's a start:

#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;
}



回答2:


I strongly suggest reading a good C programming book. It will be much faster than asking questions here.

Hovever, the program arguments is given as a null terminated array of strings to the main function, which is usually declared as

 int main (int argc, char**argv) { /*...*/ }

if you run your program with ./hanoistower 3 and if your hanoistower.c is your source code (which you need to compile with debugging and warning enabled, i.e. gcc -Wall -g hanoistower.c -o hanoistower on Linux) then you have one extra argument, so

  1. argc == 2
  2. argv[0] is the "./hanoistower" string
  3. argv[1] is the "2" string (use atoi to convert it to an int)
  4. argv[2] is NULL

Please, please learn to use the debugger (gdb on Linux).




回答3:


Just add, argc and argv to the list of main method parameters, as shown below:

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

Then use argv as the variable to specify number of rings inside your code.



来源:https://stackoverflow.com/questions/8324066/input-from-the-execution-line-in-the-terminal-in-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!