我遇到的問題是我必須在c中編寫一個hanois塔式遊戲,並且環的數量輸入不能在程序中,但代碼必須讀取執行中的響鈴次數。來自終端中執行線的輸入c
實施例: ./ hanoistower 3
和代碼應該得到3作爲輸入。我怎樣才能做到這一點?
我遇到的問題是我必須在c中編寫一個hanois塔式遊戲,並且環的數量輸入不能在程序中,但代碼必須讀取執行中的響鈴次數。來自終端中執行線的輸入c
實施例: ./ hanoistower 3
和代碼應該得到3作爲輸入。我怎樣才能做到這一點?
命令行參數通過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;
}
我強烈建議讀一本好的C編程書。這將比在這裏提問更快。
Hovever,程序參數給出字符串的空終止數組的主要功能,如果你有./hanoistower 3
,如果你hanoistower.c
運行您的程序,它通常被聲明爲
int main (int argc, char**argv) { /*...*/ }
是你的源代碼(你需要調試和警告編譯啓用,即在Linux上gcc -Wall -g hanoistower.c -o hanoistower
),那麼你有一個額外的參數,所以
argc == 2
argv[0]
是"./hanoistower"
串argv[1]
是"2"
字符串(使用atoi
將它轉化成一個int
)argv[2]
是NULL
請,請學會用調試器(gdb
在Linux上)。
只需添加,argc
和argv
到main
方法的參數列表中,如下圖所示:
int main (int argc, char *argv[])
然後用argv
作爲變量來指定代碼中的環數。
我很驚訝,你發現在論壇上比在圖書館上要花更多時間(*幾個小時*)來閱讀一本好的C編程書籍更簡單。 –
你的大學沒有圖書館嗎?你知道,紙質教科書! –