2012. 3. 21. 03:07
유닉스에서는 프로그램 실행시 옵션으로 '-a','-b'등등을 줄 수 있는 것이 많은데 이 처리를 쉽게 하기 위해 만들어진 함수가 getopt입니다.

리눅스라면 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 );
}
}

Posted by k1rha