Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 12

PROGRAM ARGUMENTS

Command line arguments


Arguments that we pass on to main() at the command prompt

Variable number of arguments


How to write functions that accepts the variable number of arguments

Command Line Arguments


Argc and argv - arguments handled by main(). Argv-char array of pointers to strings Argc-number of strings to which argv points,it is an integer General form of main() with command line arguments. main ( int argc, char *argv[ ] )

Command line arguments-Example argumentsMain(int argc,char *argv[]) { If(argc!=2) Printf(invalid input format); Else Printf(Length of the string is:%d,strlen(argv[1])); } >./a.out command /*argv[0]=./a.out argv[1]=command*/ Length of the string is:7 >./a.out Invalid input format

Variable number of arguments


Some functions in the standard library accepts variable number of arguments. Printf() and scanf() are the examples. Let us discuss variable number of arguments with an example. double average(double v1,double v2 )
 Function is used to compute the average  Denotes that the function has a variable number of arguments  Above statement demonstrates the prototype of function with variable number of arguments.

Variable number of arguments


Must have atleast one fixed argument,in our example it is 2. Now, how to reference the arguments when writing the function. Stdarg.h header provides three macros to access the arguments.
Va_start Va_arg Va_end

Va_start() macro
General form: void va_start(va_list parg, last_fixed_arg); Variable argument start accepts two arguments.
Pointer parg of type va_list Name of the last fixed parameter

Va_list is defined in stdarg.h and it is used to store information required by the routines

Va_start() macro
Va_start macro for an average function can be like this.
double average(double v1, double v2, ...) { va_list parg; /* Pointer for variable argument list */ /* More code to go here... */ va_start( parg, v2); /* More code to go her. . . */ }

Example
double average( double v1, double v2,...) { va_list parg; /* Pointer for variable argument list */ double sum = v1+v2; /* Accumulate sum of the arguments */ double value = 0; /* Argument value */ int count = 2; /* Count of number of arguments */ va_start(parg,v2); /* Initialize argument pointer */ while((value = va_arg(parg, double)) != 0.0) { sum += value; count++; } va_end(parg); /* End variable argument process */ return sum/count; }

Example
#include <stdio.h> #include <stdarg.h> double average(double v1 , double v2,...); /* Function prototype */ int main(void) { double Val1 = 10.5, Val2 = 2.5; int num1 = 6, num2 = 5; long num3 = 12, num4 = 20; printf("\n Average = %lf", average(Val1, 3.5, Val2, 4.5, 0.0)); printf("\n Average = %lf", average(1.0, 2.0, 0.0)); printf("\n Average = %lf\n", average( (double)num2, Val2,(double)num1, (double)num4,(double)num3, 0.0)); return 0; }

I request Electronics and communication ENGINEERING students to visit my blog for more abhishek1ek.blogspot.com awhengineering.blogspot.com

You might also like