유닉스에서는 프로그램 실행시 옵션으로 '-a','-b'등등을 줄 수 있는 것이 많은데 이 처리를
쉽게 하기 위해 만들어진 함수가 getopt입니다.
리눅스라면 getopt.h를, 유닉스 계열은 unistd.h를 include하시면 쓸 수 있습니다.
함수 정의는 당연히 위의 헤더 파일에 있을 거고요. 내용정의가 필요없다는 위의 답변은 저도 무슨 말인지 이해가 안되는군요...ㅡ.ㅡ;;
getopt의 아규먼트는 첫번째 두번째는 그냥 main에서 받는 argc랑 argv를 넘겨주면 되고, 세번째 인자는 옵션 형태입니다. 즉 위의 예제같은 경우 -a -d -i -v가 가능하다는 얘기구요. ':'의 의미는 추가 내용이 필요한 옵션이란 얘기죠. 위의 경우 -i는 -i 뒤에 또 무슨 내용이 와야 된다는 의미입니다.
리눅스라면 getopt.h를, 유닉스 계열은 unistd.h를 include하시면 쓸 수 있습니다.
함수 정의는 당연히 위의 헤더 파일에 있을 거고요. 내용정의가 필요없다는 위의 답변은 저도 무슨 말인지 이해가 안되는군요...ㅡ.ㅡ;;
getopt의 아규먼트는 첫번째 두번째는 그냥 main에서 받는 argc랑 argv를 넘겨주면 되고, 세번째 인자는 옵션 형태입니다. 즉 위의 예제같은 경우 -a -d -i -v가 가능하다는 얘기구요. ':'의 의미는 추가 내용이 필요한 옵션이란 얘기죠. 위의 경우 -i는 -i 뒤에 또 무슨 내용이 와야 된다는 의미입니다.
ex)
while( (option = getopt( argc, argv, "t:d:s:a:" ))
!= -1 )
{
switch( option )
{
case 't':
strcpy( t_addr, optarg );
break;
case 'd':
strcpy( data_file, optarg );
break;
case 's':
step = atoi(optarg);
break;
case 'a':p
sprintf( account, "~%s/", optarg );
break;
default:
fprintf( stderr, "Usage : ./%s <Enter>\n", argv[0] );
exit( 1 );
{
switch( option )
{
case 't':
strcpy( t_addr, optarg );
break;
case 'd':
strcpy( data_file, optarg );
break;
case 's':
step = atoi(optarg);
break;
case 'a':p
sprintf( account, "~%s/", optarg );
break;
default:
fprintf( stderr, "Usage : ./%s <Enter>\n", argv[0] );
exit( 1 );
}
}
}
'C,C++ ' 카테고리의 다른 글
음성 파일 보낼때 음성타입 구조체 (The structure WAVE for Matex) (0) | 2012.04.12 |
---|---|
calloc vs malloc 함수의 비교 (2) | 2012.03.21 |
MFC에서 중복실행 방지 코드 (0) | 2012.03.21 |
network nonblocking socket 넌블러킹 소켓 (0) | 2012.03.21 |
opendir 디렉토리를 열어보는 함수. (0) | 2012.03.21 |