2012-02-17 2 views
0

UNIX에서 C++의 명령 줄 매개 변수를 어떻게 검사 할 수 있습니까? 예를 들어 매개 변수를 입력하지 않은 경우 세분화 오류를 가져 오는 대신 오류 메시지를 어떻게 인쇄합니까?UNIX에서 C++의 명령 줄 매개 변수를 확인하는 방법은 무엇입니까?

+3

[무엇을 시도해 봤습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) 세분화 오류가 발생하는 사례를주의하십시오. –

답변

3
if (argc<2) 
{ 
    fprintf(stderr, "This program requires more parameters\n"); 
    return -1; 
} 
0

getopt을 사용하십시오. argc 만약

1

는 사용자가 어떤 명령 줄 매개 변수를 제공하지 않았다, 1보다 큰 경우 :

#include <stdio.h> 

int main (int argc, char *argv[]) 
{ 
    if (argc < 2) 
    { 
     printf("The command had no arguments.\n"); 
    } 
    return 0; 
} 
+0

'argv [0]'은 항상 실행 된 프로그램의 이름이 아닙니다. 'execl'을 사용하면 NULL을 포함하여 아무 것도 될 수 없습니다. 또한보십시오 http://stackoverflow.com/a/275317/79455 – rve

+0

Re "첫 번째 인수 (argv [0]) 항상 실행 된 프로그램의 이름입니다": 그건 잘못 됐어. 'argv [0]'이 프로그램의 이름이라는 것을 위임하는 것이 아니라 관례에 따른다. 어떤 프로그램을 호출하기 위해서'exec' 계열의 함수를 사용한다면 당신이 원하는대로 argv [0]을 만들 수 있습니다. 그 이름 (또는 특히 경로)을'argv [0]'으로 전달하지 않는 강력한 보안상의 이유가 있습니다. –

+0

주의 사항 : @DavidHammen 감사합니다 :) – Meysam

0

이 높은 명령 줄 구문 분석에 대한 부스트 program_option 라이브러리를 권장합니다.

관련 문제