2017-11-19 3 views
0

私は、ユーザー入力に基づいてグリッドを使って "connect 4"プログラムを作成する必要があります。どのようにバッファリングせずにスキャンされたintの量を検出するか、別の引数を待たずに短い入力を「受け入れる」ことができますか?この場合、ユーザーはプログラムの開始時に3つの値を入力する必要があります。あなたが必要なものscanfを使用して特定の数の引数(int)を検証しますか?

Example 1 
./connectn.out 5 20 
Not enough arguments entered 

Example 2 
./connectn.out 13 2 3 4 5 
Too many arguments entered 
+1

なぜ 'main()'に 'argv'と' argc'パラメータを宣言していないのですか?次に、 'argc'が3に等しいかどうかを調べることができます。私は[this](http://crasseux.com/books/ctutorial/argc-and-argv.html)チュートリアルを見てみることをお勧めします。 – Logan

+3

'scanf'はプログラム入力のためのものです。あなたが求めているのは、かなり異なるコマンドライン引数です。何が供給されたかを見るには 'argc'をチェックしてください。 –

答えて

0

はargcとargvのパラメータです。引数countにargc、引数自体にargvを使用できます。ここで

はあなたのためのサンプルコードです:

#include <stdio.h> 
#include <string.h> 

int main (int argc, char * argv[]) 
{ 
    // Check the argument count first 
    if (argc != 4) 
    { 
    if (argc > 4) 
    { 
     printf("Too many arguments entered!\n"); 
    } 
    else 
    { 
     printf("Not enough arguments entered!\n"); 
    } 
    return -1; 
    } 
    else 
    { 
    // Check a specific argument (-h) 
    if (strcmp(argv[3], "-h") != 0) 
    { 
     printf("Invalid option!\n"); 
     return -1; 
    } 
    } 

    printf("Hello World.\n"); 
    return 0; 
} 

注 "connectn.out" もカウントされるため./connectn.out 5 20のargcで3であること。ここで

は、いくつかのサンプル出力です:

./out 1 2 
Not enough arguments entered! 
./out 1 2 3 4 
Too many arguments entered! 
./out 1 2 -a 
Invalid option! 
./out 1 2 -h 4 
Too many arguments entered! 
./out 1 2 -h 
Hello World. 

は、この情報がお役に立てば幸いです。

Baris

関連する問題