Header Ads

Command-line Arguments - Objective C

It is possible to pass some values from the command line to your Objective C programs when they are executed. These values are called command line argument and many times they are important for your program, especially when you want to control your program from outside instead of hard coding those values inside the code.

The command line arguments are handled using main() function arguments where argc referes to the number of argument passed, and argv[] is a pointer array, which points to each argument passed to the program.Following is a simple example, which checks if there is any argument supplied from the command line and take action accordingly.

#import <Foundation/Foundation.h>

int main( int argc , char *argv[] )
{
     if ( argc == 2)
     {
          NSLog(@"The argument supplied is %s", argv[1]);
     }
     else if( argc > 2)
     {
                NSLog(@"Too many arguments supplied\n");
    }
    else
     {
             NSLog(@"One argument expected\n");
     }
   return 0;
}

It should be noted that argv[0] holds the name of the program itself and argv[1] is a pointer to the first command-line argument supplied, and *argv[n] is the last argument. If no arguments are supplied, argc will be one ,otherwise if you pass one argument, then argc is set at 2.

You pass all the command line argument separated by a space, but if argument itself has a space, then you can pass such argument by putting them inside double quotes "" or single quotes ' ' . Let us re-write above example once again where we will print program name and we also pass a command-line argument by putting inside double quotes:

#import <Foundation/Foundation.h>

int main( int argc , char *argv[] )
{
       NSLog(@"Program name %s\n", argv[0]);
    
      if ( argc == 2)
     {
          NSLog(@"The argument supplied is %s", argv[1]);
     }
     else if( argc > 2)
     {
                NSLog(@"Too many arguments supplied\n");
    }
    else
     {
             NSLog(@"One argument expected\n");
     }
   return 0;
}

Then run on  you pc and check output

No comments:

Powered by Blogger.