명령 줄에서 더 많은 인수를 가져 와서 새로운 줄마다 각 인수를 출력하도록하고 싶습니다. 같은 구조를 유지하면 어떻게 될까요? 나는 또한 -f 출력을 얻고 싶다. 코멘트에서getopt를 통해 몇 가지 인수 전달하기
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <getopt.h>
int
main(int argc, char *argv[])
{
int nod1, opt;
int nsecs, nod2;
nsecs = 0;
nod2 = 0;
nod1 = 0;
while ((opt = getopt(argc, argv, "nf:")) != -1) {
switch (opt) {
case 'n':
nod1 = 1;
break;
case 'f':
nsecs = atoi(optarg);
nod2 = 1;
break;
default: /* '?' */
fprintf(stderr, "Usage: %s [-t nsecs] [-n] name\n",
argv[0]);
exit(EXIT_FAILURE);
}
}
printf("nod1=%d; nod2=%d; optind=%d\n", nod1, nod2, optind);
if (optind >= argc) {
fprintf(stderr, "Expected argument after options\n");
exit(EXIT_FAILURE);
}
printf("Output = %s\n", argv[optind]);
/* Other code omitted */
exit(EXIT_SUCCESS);
}
다음 -f
후
인수는 선택해야하며, 내가 서로에서 통과 된 모든 하나 하나를 나열 할 ...
$ ./partitioner -n 4 -f Test1 Test2 Test3 Test4 Number:4 File names: Output = Test1 Output = Test2 Output = Test3 Output = Test4 $
내가보고 한 후 올바른 사용법 메시지를 포함하는 것이 좋습니다 '옵션 뒤에 예상되는 인수'와 같은 윙윙 거리기. 사람들이 올바른 사용법을 얻는 데 도움이됩니다. 사용법 메시지 ('-t'에 언급)가'getopt()'가 기대하는 것과 일치하면 ('-f') 좋은 아이디어입니다. –
POSIX ['getopt()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html)는 선택적 인수를 현명하게 처리하지 않습니다. GNU'getopt()'는 조금 낫지 만 많이 사용하지는 않습니다. 가능한 한 언제나 피하십시오. 주석에서 복사 한 샘플 사용법은 '-f'와'-t' 문제가 해결 되더라도 사용법과 일치하지 않습니다. 인수가없는'-n' 뒤에 인수'4'가 있습니다. 클래식 (POSIX)'getopt()'에서는 옵션을 종료합니다. GNU'getopt()'는 환경에 POSIXLY_CORRECT가 없거나 올바른 표시를 사용하여 옵션을 시작하지 않는 한 옵션과 인수를 변경합니다. –
현재, 나는 당신이 무엇을 요구하고 있는지 '가까이 - 불분명하다'라고 투표했습니다.당신이 달성하기를 원하는 것을 분명히하고 나면 다시 생각해보고 (그리고이 주석을 제거한) 나에게 (@ 조나단) 나에게 의견을 말하십시오. –