The arguments that we pass on to main() at the command prompt are called command line arguments. The full declaration of main looks like this:

int main (int argc, char *argv[])  

The function main() can have two arguments, traditionally named as argc and argv. Out of these, argv is an array of pointers to strings and argc is an int whose value is equal to the number of strings to which argv points. When the program is executed, the strings on the command line are passed to main(). More precisely, the strings at the command line are stored in memory and address of the first string is stored in argv[0], address of the second string is stored in argv[1] and so on. The argument argc is set to the number of strings given on the command line.

For example, in our sample program, if at the command prompt we give,

filecopy PR1.C PR2.C

then,

argc would contain 3 * argv[0] - would contain base address of the string "filecopy" * argv[1] - would contain base address of the string "PR1.C" * argv[2] - would contain base address of the string "PR2.C"

Following is a simple example which checks if there is any argument supplied from the command line and take action accordingly −

#include <stdio.h>
int main( int argc, char *argv[] )  {  
   if( argc == 2 ) 
   {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) 
   {
      printf("Too many arguments supplied.\n");
   }
   else 
   {
      printf("One argument expected.\n");
   }
}

When the above code is compiled and executed with single argument, it produces the following result.

argumenttest.exe testing  
The argument supplied is testing