2016-10-20 2 views
3

특정 제약 조건에서 숫자 0-9를 사용하여 가능한 다른 암호의 수를 계산하는 프로그램을 작성하려고합니다. 그것은 하나의 필수 명령 행 인수를 가지며 암호의 자릿수가되며 옵션 인 인수가 있으며 이는 금지 된 숫자입니다. 인수가 입력되지 않으면 모든 자릿수가 허용됩니다.C/C++에 대한 선택적 명령 줄 인수는 어떻게 전달합니까?

예를 들어, 내 프로그램을 호출 할 필요가 조합 :

$ combinations 8 3 #find number of passwords of length 8 with '3' not allowed 

나는 그것을보고 당신이 예를 들어

int myfunction(int optional = 3); 

와 함수에 대한 인수가 선택 할 수 있다는 것을 발견했습니다. 그러나 아무것도 입력하지 않으면 값을 기본값으로 설정하는 것 같습니다. 공백으로두면 모든 자릿수를 허용해야합니다. 커맨드 라인 인수에서도 어떻게해야할까요?

+0

'argc'를 사용하여 프로그램에 전달 된 인수의 총 개수를 얻을 수 있습니다. 이 카운터는 파일 이름을 포함한 인수를 제공합니다. 그래서, 주어진 예제에서'argc'는 3이 될 것입니다. 그리고 여러분은 나머지 로직을 만들 수 있습니다. –

+0

만약'int myfunction (int optional = 3); '을 사용하고 있다면 C를 쓰지 않을 것입니다; C++ 만 기본 인수를 허용합니다. 그러나 명령 행 인수 구문 분석과 밀접하지 않습니다. 기본적으로'main()'에서'argc'를보고'argc == 2 '는'길이 만'을 의미하고'argc == 3 '은'길이와 금지 된 숫자'를 의미합니다. 그 외의 것은 사용법 메세지 ('fprintf (stderr, "Usage : % s length [forbidden] \ n", argv [0]); 또는 그 근처)로 거부됩니다. 또한 인수가 유효한지 확인합니다. –

답변

3

명령 줄 인수는 main 함수의 매개 변수로 명령 줄에서 프로그램으로 전달됩니다. 서명은 int main(int argc, char** argv)이어야합니다.

두 번째 매개 변수는 프로그램 호출시 전달 된 모든 인수 (프로그램 이름 포함)를 보유하는 널 (NULL) 종료 문자열 배열입니다. 첫 번째는 배열에 몇 개의 문자열이 있는지입니다.

argc > 2을 확인한 다음 해당 숫자로 argv[2]을 구문 분석해야합니다.

+0

완전성을 위해'int main (int argc, char * argv [])'도 허용됩니다. –

+0

@DavidBowling, 그렇습니다. 그러나 대체 양식보다 구문 론적 인 설탕입니다. – StoryTeller

관련 문제