Article View: comp.std.c
Article #2889Re: A small programming challenge.
From: Kevin Spencer
Date: Thu, 16 May 1991 07:32
Date: Thu, 16 May 1991 07:32
74 lines
2682 bytes
2682 bytes
In article <1499@loki.une.oz.au> kevin@loki.une.oz.au (Kevin Pollard) writes:
>I have written some code to accept command line parameters and apply
>meaningful parameters - but I feel it is an interesting problem which
>must have some neat solutions.
>
>The task is:
> allow up to 4 parameters to be entered on the command line
> (that is, progname [ p1 [ p2 [ p3 [ p4 ] ] ] ] if you know what I mean)
> The program is to accept the parameters. If the a parameter
> is missing then it is to default to the parameter is to
> default to the one before it.
> (that is, if progname x y z is entered, then the 4th parameter
> is to default to z)
> and so on down to the first parameter which is to have a hard
> coded default. If no parameters were entered then all parmeters
> would end up defaulting to this hard coded default.
>
>
>
>Does anyone out there know of some neat ways of doing this.
>
>This is really an algorithm problem, but since there is no algorithm
>newsgroup, and I program in C on an IBM-type machine, this would be
>a relevant newsgroup.
>
>--
>Kevin Pollard Internet: kevin@loki.une.oz.au
> University of NewEngland
> Northern Rivers Phone: +61 (066) 203694
>Lismore NSW Australia "My brain hurts"
----- Solution 1 -----
#include <stdio.h>
#define PAR(n) (n < argc) ? argv[n] : argv[argc-1])
main(argc,argv)
int argc;
char **argv;
{
int i;
for (i=1; i<5; i++) puts(PAR(i));
}
----- Solution 2 -----
#include <stdio.h>
#include <string.h>
static char *args[4];
main(argc,argv)
int argc;
char **argv;
{
int i;
for (i=1; i<4; i++)
args[i] = (i<argc ? argv[i] : argv[argc-1]);
for (i=0; i<4; i++) puts(args[i]);
}
----------------------
Solution 1 is shorter, but references to PAR must be in main, or argc and
argv must be globally referenceable.
Solution 2 is more robust, but more complicated.
--
-----------------------------------///-----------------------------------------
Kevin Spencer (09) 420 8173 /// Insert profound gem of wisdom here...
kevin@ncc.telecomwa.oz.au \\\///
-------------------------------\XX/--------------------------------------------
Technical Details
Message-ID:
<1991May16.073245.12652@nodecg.ncc.telecomwa.oz.au>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!batcomputer!munnari.oz.au!uniwa!nodecg!kevinReferences:
<1499@loki.une.oz.au>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!batcomputer!munnari.oz.au!uniwa!nodecg!kevin From: kevin@nodecg.ncc.telecomwa.oz.au (Kevin Spencer) Newsgroups: comp.std.c Subject: Re: A small programming challenge. Keywords: Algorithm Message-ID: <1991May16.073245.12652@nodecg.ncc.telecomwa.oz.au> Date: 16 May 91 07:32:45 GMT References: <1499@loki.une.oz.au> Reply-To: kevin@nodecg.UUCP (Kevin Spencer) Organization: Network Computer Centre - Telecom Lines: 74