variable number of strings passed to function - how?
Burris
burris at ihuxz.ATT.COM
Sat Oct 22 00:16:01 AEST 1988
> I want to write a function that accepts a variable number of string
> arguments. What is a possible way to do this?
>
> -pete
>
In the C language arguments are placed on the stack in reverse order
such that the first argument is the lowest index off of the stack pointer.
This allows you to pass the first argument as a count of the number of
following arguments.
Example:
string_func( 3, "how", "what", "why" );
or
string_func( 4, "how", "what", "why", "where" );
then
int
string_func( argn, argv )
int argn;
char *argv;
{
int i;
char **argp;
argp = &argv; /* argp is a pointer to the first
* string pointer
*/
for( i = 0; i < argn; i++ )
{
printf( "%s\n", *argp++ );
}
}
Another (and probably better) way:
string_func( "what", "why", "where", NULL );
or
string_func( "what", "why", "where", "how", NULL );
then
int
string_func( argv )
char *argv;
{
char **argp;
argp = &argv;
/* now loop while the string pointer is not
* set to NULL
*/
while( *argp != NULL )
{
printf( "%s\n", *argp++ );
}
}
No, I didn't compile either example but they should give you a rough
idea of how to do this. The examples assume that the stack grows in a
negative direction.
In both cases you set argp to the ADDRESS of the first string pointer
on the stack. The CONTENTS of argp is the POINTER to the first string.
Incrementing argp causes it to point to the second string pointer.
Dave Burris
..att!ihuxz!burris
More information about the Comp.lang.c
mailing list