2011-11-30 51 views
0

我遇到的問題是我必須在c中編寫一個hanois塔式遊戲,並且環的數量輸入不能在程序中,但代碼必須讀取執行中的響鈴次數。來自終端中執行線的輸入c

實施例: ./ hanoistower 3

和代碼應該得到3作爲輸入。我怎樣才能做到這一點?

回答

4

命令行參數通過C程序的main()函數傳播爲字符串。

In 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; 
} 
2

我強烈建議讀一本好的C編程書。這將比在這裏提問更快。

Hovever,程序參數給出字符串的空終止數組的主要功能,如果你有./hanoistower 3,如果你hanoistower.c運行您的程序,它通常被聲明爲

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

是你的源代碼(你需要調試和警告編譯啓用,即在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

請,請學會用調試器(gdb在Linux上)。

+0

我很驚訝,你發現在論壇上比在圖書館上要花更多時間(*幾個小時*)來閱讀一本好的C編程書籍更簡單。 –

+0

你的大學沒有圖書館嗎?你知道,紙質教科書! –

0

只需添加,argcargvmain方法的參數列表中,如下圖所示:

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

然後用argv作爲變量來指定代碼中的環數。