I recently learned the command-line argument from my book, and I understand that both of argc and argv. HOWEVER, I don't know when I will use them and for what purpose??? I appreciate if anybody can help me!!:sad:

It is used when you want to control your program from the command line. Rather than promting the user for input, say for example entering a filename, you can use a switch like -f filename.txt and that will be all the program needs for execution. The command line arguments are particularly useful for automated testing. If you have a lot of inputs to test, you can't always enter them by hand. So you can create a bash or dos script that creates the appropriate commandline for each input and run the program by passing those arguments.

Thank you for your help. It took me a long time trying to understand what you said. Finally, I understand the meaning of the program its in my book. The program named add (which add two numbers and output the result) , and I wrote that program and use command-line to test. It works!! The sample program named add is

#include<iostream>
#include<cstdlib>
using namespace std;
int main( int argc, char *argv[])
{
double a, b ;
if (argc != 3)
{
cout << "Usage : add num num \n";
return 1;
}
a = atof ( argv [1] );
b = atof ( argv [2] );
cout << a + b ;
return 0 ;
}

But, I got some other problems...
The sample program add in my book is designed for use in command-line (at least I think that way). So, if I want to test some program from the command-line, should I always include for example like this part in my program?

int main( int argc, char * argv[])
a = atof ( argv [1] ); b = atof ( argv [2] );

And also in your explanation, you put -f filename.txt . This is text filename. What I did is just put filename and 2 numbers (add 100 200), and that files extension is .exe. I tried to use text file which I simply typed add 100 200 in the note pad and saved it with the extension .txt and put that file name in the command-line. Then what is does is just to open that file...... ( I know its stupid...)

I think I still can't fully understand what you said....(I got some)
If you have time, please help me.

So, if I want to test some program from the command-line, should I always include for example like this part in my program?

int main( int argc, char * argv[])
a = atof ( argv [1] ); b = atof ( argv [2] );

Those things are included there becoz whatever we accept from the command is passed to the program in the form of char* (old C style strings) -- thats why the main() prototype contains char* argv[] which means argv is an array of char* or C style strings. atof is used since what we want to do is add two floating point values but they are supplied by the user in String format -- so we need to convert from string to float so that they can be added in a natural way.

And also in your explanation, you put -f filename.txt . This is text filename. What I did is just put filename and 2 numbers (add 100 200), and that files extension is .exe. I tried to use text file which I simply typed add 100 200 in the note pad and saved it with the extension .txt and put that file name in the command-line. Then what is does is just to open that file...... ( I know its stupid...)

The filename specified at the command line is also accepted by the prog as C style string. So inorder to make use of the data present in the file, you need to open the file with the file name specified on the command, pull the values present in the file and add them together. Just specifying the file name wont do the job. Think of command line arguments as another way of passing arguments to the program just like "Wolfpack" said.

Related to this explanation see
http://www.d.umn.edu/~gshute/C/examples/myecho.C.html
http://www.cprogramming.com/tutorial/lesson14.html
http://goforit.unk.edu/cprogram/c_105a.htm (excellent sample)

Hope it helped, bye.

The best thing for you to do is to design a command line argument handling program by yourself. Maybe you will find one in the exercises of your book. If you find one, do it and post it here with the question for us to check. If you can't find one tell me and I will give you an exercise :)

Thank you for all your help. I will keep studying my book and if I can find exercise program, I will do it or try writing one myself. The way to become programmer is far away for me......but I will not give up!!! Thank you.

This article has been dead for over six months. Start a new discussion instead.