How to pass command line arguments to a c program
I've known how to write a program that accepts command line arguments ever since I learned to program. What I don't understand is how these parameters get their values. Hopefully I don't have these two mixed up but there is a difference between an argument and a parameter. An argument is the value given to the function when it is called such as: foo( a, b, c); where a, b, and c are the values. A parameter is the values that are inside the function while is being called.
So my question is how does a person pass command line arguments to a program? I understand how to read the arguments, that argc
is the number of arguments, argv
is a pointer to an array of strings containing the arguments, etc. etc. but I just don't know how to give those arguments a value..
I'm looking for information for both C and C++. I'm sort of a novice at this.
In a Windows environment you just pass them on the command line like so:
myProgram.exe arg1 arg2 arg3
argv[1] contain arg1 etc
The main function would be the following:
int main (int argc, char *argv[])
On *nix:
$ ./my_prog arg1 arg2
On Windows command line:
C:\>my_prog.exe arg1 arg2
In both cases, given the main
is declared as:
int main (int argc, char *argv[])
argc
will be an int
with a value of 3, argv[1] = "arg1"
, argv[2] = "arg2"
, additionally, argv[0]
will have the name of the program, my_prog
.
Command line arguments are normally separated by space, if you wish to pass an argument with a space, like hello world
, use a double quote:
$ ./my_prog "hello world"