c - how to take integers as command line arguments? -
i've read a getopt() example doesn't show how accept integers argument options, cvalue
in code example:
#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (int argc, char **argv) { int aflag = 0; int bflag = 0; char *cvalue = null; int index; int c; opterr = 0; while ((c = getopt (argc, argv, "abc:")) != -1) switch (c) { case 'a': aflag = 1; break; case 'b': bflag = 1; break; case 'c': cvalue = optarg; break; case '?': if (optopt == 'c') fprintf (stderr, "option -%c requires argument.\n", optopt); else if (isprint (optopt)) fprintf (stderr, "unknown option `-%c'.\n", optopt); else fprintf (stderr, "unknown option character `\\x%x'.\n", optopt); return 1; default: abort (); } printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue); (index = optind; index < argc; index++) printf ("non-option argument %s\n", argv[index]); return 0; }
if ran above testop -c foo
, cvalue
foo
, if wanted testop -c 42
? since cvalue
of type char *
, cast optarg
(int)
? i've tried doing without using getopt()
, accessing argv[whatever]
directly, , casting integer, end large negative number when printing %d
. i'm assuming i'm not dereferencing argv[]
correctly or something, not sure...
you need use atoi()
convert string integer.
Comments
Post a Comment