Finally getting around to playing with getopt in C
This commit is contained in:
parent
13257b1ecc
commit
2fa6c49132
1
digressions/.gitignore
vendored
1
digressions/.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
/temperatures
|
/temperatures
|
||||||
/qsort-example
|
/qsort-example
|
||||||
|
/getopt-example
|
||||||
|
@ -3,6 +3,6 @@ CFLAGS += -g -Wall -Wextra -pedantic -pedantic-errors
|
|||||||
%.class:%.java
|
%.class:%.java
|
||||||
javac -d $(PWD) $^
|
javac -d $(PWD) $^
|
||||||
|
|
||||||
all: temperatures qsort-example URLParts.class
|
all: temperatures qsort-example getopt-example URLParts.class
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
45
digressions/getopt-example.c
Normal file
45
digressions/getopt-example.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Example getopt usage mostly from getopt(3)
|
||||||
|
*/
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int flags, opt;
|
||||||
|
int nsecs, tfnd;
|
||||||
|
|
||||||
|
nsecs = 0;
|
||||||
|
tfnd = 0;
|
||||||
|
flags = 0;
|
||||||
|
while ((opt = getopt(argc, argv, "nt:")) != -1) {
|
||||||
|
switch (opt) {
|
||||||
|
case 'n':
|
||||||
|
flags = 1;
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
nsecs = atoi(optarg);
|
||||||
|
tfnd = 1;
|
||||||
|
break;
|
||||||
|
default: /* '?' */
|
||||||
|
fprintf(stderr, "Usage: %s [-t nsecs] [-n] name\n",
|
||||||
|
argv[0]);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("flags=%d; tfnd=%d; optind=%d\n", flags, tfnd, optind);
|
||||||
|
|
||||||
|
if (optind >= argc) {
|
||||||
|
fprintf(stderr, "Expected argument after options\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("name argument = %s\n", argv[optind]);
|
||||||
|
|
||||||
|
/* Other code omitted */
|
||||||
|
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user