Using command-line arguments in C++

By Lakshmi Viewed: 31818 times Emailed: 238 times Printed: 226 times Bookmark and Share



Many operating systems, such as DOS and UNIX, enable the user to pass parameters to your program when the program starts. These are called command-line options, and are typically separated by spaces on the command line. For example:

SomeProgram Param1 Param2 Param3

These parameters are not passed to main() directly. Instead, every program's main() function is passed two parameters. The first is an integer count of the number of arguments on the command line. The program name itself is counted, so every program has at least one parameter. The example command line shown previously has four. (The name SomeProgram plus the three parameters make a total of four command-line arguments.)

The second parameter passed to main() is an array of pointers to character strings. Because an array name is a constant pointer to the first element of the array, you can declare this argument to be a pointer to a pointer to char, a pointer to an array of char, or an array of arrays of char.

Typically, the first argument is called argc (argument count), but you may call it anything you like. The second argument is often called argv (argument vector), but again this is just a convention.

It is common to test argc to ensure you've received the expected number of arguments, and to use argv to access the strings themselves. Note that argv[0] is the name of the program, and argv[1] is the first parameter to the program, represented as a string. If your program takes two numbers as arguments, you will need to translate these numbers to strings. On Day 21 you will see how to use the standard library conversions. Listing below illustrates how to use the command-line arguments.

Using command-line arguments.

1:     #include <iostream.h>
2:     int main(int argc, char **argv)
3:     {
4:        cout << "Received " << argc << " arguments...\n";
5:        for (int i=0; i<argc; i++)
6:           cout << "argument " << i << ": " << argv[i] << endl;
7:     return 0;
8: }

Output: TestProgram  Teach Yourself C++ In 21 Days
Received 7 arguments...
argumnet 0: TestProgram.exe
argument 1: Teach
argument 2: Yourself
argument 3: C++
argument 4: In
argument 5: 21
argument 6: Days

Analysis: The function main() declares two arguments: argc is an integer that contains the count of command-line arguments, and argv is a pointer to the array of strings. Each string in the array pointed to by argv is a command-line argument. Note that argv could just as easily have been declared as char *argv[] or char argv[][]. It is a matter of programming style how you declare argv; even though this program declared it as a pointer to a pointer, array offsets were still used to access the individual strings.

On line 4, argc is used to print the number of command-line arguments: seven in all, counting the program name itself.

On lines 5 and 6, each of the command-line arguments is printed, passing the null-terminated strings to cout by indexing into the array of strings.




Comments(7)


1. Simple and to the point. Thanks for this tutorial.

By: Balvinder at 2008-08-03 04:40:05
2. Very useful. Thank you. Would be interesting to know how the program obtains argc? And what type of storage class is it? Is it possible to reuse the variable?

By: Sergei at 2009-02-07 19:18:46
3. what does argc means?

By: Don Panganiban at 2009-10-09 21:19:48
4. A good and useful tutorial for beginners.
thanks a lot.

By: Hayk at 2010-01-12 10:55:15
5. @3
argc simply means the argument count.

Thanks for the explanation on command line arguments. It provided me with a better understanding of its purpose.

By: CDub at 2010-02-22 09:32:54
6. can u give a gud example on command line arguments

By: shravan at 2010-04-09 23:11:18
7. This came out of a book

By: Kyle Bradley at 2010-04-12 19:48:12

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:


Enter Code:
The Captcha image

Latest Tutorials

[2010-04-15]File in C++ - Writing text to a file in C++
[2009-05-30]Function overloading in C++
[2009-05-30]Default arguments in C++
[2009-05-30]Call by reference in C++ Functions
[2007-09-17]Operator Precedence in C++
[2007-09-17]How to handle Exceptions in C++
[2007-09-17]atoi(), itoa() in C++
[2007-09-17]qsort() sample program in C++
[2007-09-17]ctime() sample program in C++
[2007-09-17]strcat() and strncat() sample program in C++
[2007-09-17]strcpy() and strncpy() sample program in C++
[2007-09-17]strlen() sample program in C++
[2007-09-17]Using #define, The Preprocessor and the Compiler in C++
[2007-09-17]assert() example program in C++
[2007-09-17]assert() Versus Exceptions in C++

More Latest News

Most Viewed Articles (in last 30 days)
Using cout in C++
Using switch Statements in C++
C++ Recursion function explained using Fibonacci series
assert() example program in C++
Difference between Procedural, Structured, and Object-Oriented Programming
Public versus Private members in C++
The if Statement in C++
Constructors and Destructors in C++
Using command-line arguments in C++
atoi(), itoa() in C++
do...while Loops in C++
while (1) Loops in C++
cin.ignore() in C++
Nested Loops in C++
Function overloading in C++
Most Emailed Articles (in last 30 days)
Difference between Procedural, Structured, and Object-Oriented Programming
C++ Recursion function explained using Fibonacci series
Using cout in C++
strcpy() and strncpy() sample program in C++
Using switch Statements in C++
strcat() and strncat() sample program in C++
ctime() sample program in C++
atoi(), itoa() in C++
qsort() sample program in C++
A Brief History of C++
Getting Started with C++
assert() example program in C++
Public versus Private members in C++
How to handle Exceptions in C++
Using Comments in a C++ Program