2017-11-19 5 views
0

사용자 입력을 기반으로 그리드와 "연결 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 매개 변수가 필요합니다. 인수 개수에 argc를 사용하고 인수 자체에 argv를 사용할 수 있습니다. 여기

당신을 위해 샘플 코드입니다 : "connectn.out는"도 계산하기 때문에 ./connectn.out 5 20는 argc에 3입니다

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

하는 것으로. 이 도움이

./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. 

희망 : 여기

는 일부 샘플 출력입니다.

바리스