The most important function of C/C++ is the main() function. It is mostly defined with a return type of int and without parameters as shown below:
int main() {
...
}
We can also give command-line arguments in C and C++. Command-line arguments are the values given after the name of the program in the command-line shell of Operating Systems. Command-line arguments are handled by the main() function of a C/C++ program.
To pass command-line arguments, we typically define main() with two arguments: the first argument is the number of command-line arguments and the second is a list of command-line arguments.
Syntax:
int main(int argc, char *argv[]) { /* ... */ }
or
int main(int argc, char **argv) { /* ... */ }
Here,
- argc (ARGument Count) is an integer variable that stores the number of command-line arguments passed by the user including the name of the program. So if we pass a value to a program, the value of argc would be 2 (one for argument and one for program name)
- The value of argc should be non-negative.
- argv (ARGument Vector) is an array of character pointers listing all the arguments.
- If argc is greater than zero, the array elements from argv[0] to argv[argc-1] will contain pointers to strings.
- argv[0] is the name of the program , After that till argv[argc-1] every element is command -line arguments.
For better understanding run this code on your Linux machine.
Example:
C
#include <stdio.h>
int main( int argc, char * argv[])
{
printf ( "You have entered %d arguments:\n" , argc);
for ( int i = 0; i < argc; i++) {
printf ( "%s\n" , argv[i]);
}
return 0;
}
|
C++
#include <iostream>
using namespace std;
int main( int argc, char ** argv)
{
cout << "You have entered " << argc << " arguments:"
<< "\n" ;
for ( int i = 0; i < argc; ++i)
cout << argv[i] << "\n" ;
return 0;
}
|
Terminal Input:
$ g++ mainreturn.cpp -o main
$ ./main geeks for geeks
Output:
You have entered 4 arguments:
./main
geeks
for
geeks
Note : Other platform-dependent formats are also allowed by the C and C++ standards; for example, Unix (though not POSIX.1) and Microsoft Visual C++ have a third argument giving the program’s environment, otherwise accessible through getenv in stdlib.h. Refer C program to print environment variables for details.
Properties of Command Line Arguments:
- They are passed to the main() function.
- They are parameters/arguments supplied to the program when it is invoked.
- They are used to control programs from outside instead of hard coding those values inside the code.
- argv[argc] is a NULL pointer.
- argv[0] holds the name of the program.
- argv[1] points to the first command line argument and argv[argc-1] points to the last argument.
Note: You pass all the command line arguments separated by a space, but if the argument itself has a space, then you can pass such arguments by putting them inside double quotes “” or single quotes ”.
Example:
C
#include <stdio.h>
int main( int argc, char * argv[])
{
printf ( "Program name is: %s" , argv[0]);
if (argc == 1)
printf ( "\nNo Extra Command Line Argument Passed "
"Other Than Program Name" );
if (argc >= 2) {
printf ( "\nNumber Of Arguments Passed: %d" , argc);
printf ( "\n----Following Are The Command Line "
"Arguments Passed----" );
for ( int i = 0; i < argc; i++)
printf ( "\nargv[%d]: %s" , i, argv[i]);
}
return 0;
}
|
C++
#include <iostream>
using namespace std;
int main( int argc, char * argv[])
{
cout << "Program name is: " << argv[0] << endl;
if (argc == 1) {
cout << "No extra Command Line Argument passed "
"other than program name"
<< endl;
}
if (argc > 1) {
cout << "Number of arguments passed: " << argc
<< endl;
cout << "----Following are the commnand line "
"arguments passed----"
<< endl;
for ( int i = 0; i < argc; i++) {
cout << "argv[" << i << "]: " << argv[i]
<< '\n' ;
}
}
}
|
Output in different scenarios:
1. Without argument: When the above code is compiled and executed without passing any argument, it produces the following output.
Terminal Input:
$ ./a.out
Output:
Program Name Is: ./a.out
No Extra Command Line Argument Passed Other Than Program Name
2. Three arguments: When the above code is compiled and executed with three arguments, it produces the following output.
Terminal Input:
$ ./a.out First Second Third
Output:
Program Name Is: ./a.out
Number Of Arguments Passed: 4
----Following Are The Command Line Arguments Passed----
argv[0]: ./a.out
argv[1]: First
argv[2]: Second
argv[3]: Third
3. Single Argument: When the above code is compiled and executed with a single argument separated by space but inside double quotes, it produces the following output.
Terminal Input:
$ ./a.out "First Second Third"
Output:
Program Name Is: ./a.out
Number Of Arguments Passed: 2
----Following Are The Command Line Arguments Passed----
argv[0]: ./a.out
argv[1]: First Second Third
4. A single argument in quotes separated by space: When the above code is compiled and executed with a single argument separated by space but inside single quotes, it produces the following output.
Terminal Input:
$ ./a.out 'First Second Third'
Output:
Program Name Is: ./a.out
Number Of Arguments Passed: 2
----Following Are The Command Line Arguments Passed----
argv[0]: ./a.out
argv[1]: First Second Third
If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or if you want to share more information about the topic discussed above.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
11 Mar, 2023
Like Article
Save Article