954,487 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

command line parameters

can some please explain what are command line parameters ? i read many books, read online didn't understand anything on what they are and when or how to use them. :(

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

What exactly did you read, and what exactly didn't you understand? Command line parameters are exceedingly simple, which suggests that you didn't try very hard or are over-complicating things.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

Here is another description you can read and maybe not understand. And if that's the case, you need more basic knowledge before you can understand the complexities of command-line parameters.

WaltP
Posting Sage w/ dash of thyme
Moderator
10,505 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 
What exactly did you read, and what exactly didn't you understand? Command line parameters are exceedingly simple, which suggests that you didn't try very hard or are over-complicating things.


sorry i should have made my post more descriptive about what i didn't understood,sometime user does not want to accept the values at that time of execution of the program then values are passed at the beginning of a program itself.

internally the two parameters 0f the C++ main() function will be used to interpret the values.they are named as arge and argv by convention.
the arge is the first parameter of type int.this supplies the number of commands/words that occurred in the program invocation. if the program is called with two parameters this will have a value of three. this includes the program name in addition to two parameters.

suppose, for example, you execute a c++ program called myapp, as follows
myapp -w file

here, the first command line word is myapp, the name of the program(pointed to by argv[0]. the second word is -w (a program option). the third command-line word is a file name called file.

the argv[] is charecter array holding each parameter value in array. usually the number of the values in the argv[] array is determined using the argc parameter and the values are pulled accordingly.

this is in my class book aboutcommand like parameters, i asked my mam to exaplin it but she gave vague answer also this thing doesnt clearly explain about argv, argc and what are command line parameters used for.

now i have to do this activity or assignment:-

modify the existing empsalary module of a telecommunication Inc to increment the salary of their employees. increment amount needs to passed from command.

how can i do this without knowing what command line parameters are.:confused:

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 
Here is another description you can read and maybe not understand. And if that's the case, you need more basic knowledge before you can understand the complexities of command-line parameters.


i am checking it now thx.:)

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 
sorry i should have made my post more descriptive about what i didn't understood,


Yea, you should be clear and concise.this is in my class book about command like parameters, i asked my mam to exaplin it but she gave vague answer also this thing doesnt clearly explain about argv, argc and what are command line parameters used for.
Yes it does. It's not the greatest explanation, but it is a correct, and accurate description of the parameters.

It is actuallyyour explanation of the problem that is vague. What is it you don't understand? What phrase or explanation is it that confuses you?

WaltP
Posting Sage w/ dash of thyme
Moderator
10,505 posts since May 2006
Reputation Points: 3,348
Solved Threads: 944
 

1)what is an argument ?

2)the arge is the first parameter of type int.this supplies the number of commands/words that occurred in the program invocation.
what doessupplies the number of commands/words that occurred in the program invocation mean ?
does this mean it will count all the parameters passed in various methods and classes ?

3)does argv[0] store all the parameter values and display them ?

thx.

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

main() is a function, a somewhat specialized function, but a function, nonetheless. It has a return type, int, a name, main, and a list of arguments contained within ()s, just like any other function in C++. The two arguments for main() are an int, called argc, and an array of C style strings called argv. argc tells the program how many elements there will be in argv. The first element in argv is the name of the program. If you don't submit values for argc and argv then, by default, argc is 1 and argv[0] is the name of the program. If you want to pass more information to main() than just the name of the program that is passed by default, then you need to use the command line. The command line is visulized when you run your program from a command prompt as opposed to within the modified window used by an IDE, such as Microsoft Visual Studio or Borland or whatever. In general terms, if the background on your screen is black and there is a white C with a flashing >, then you are using the command line to pass stuff to main(). If not, you aren't. You can pass large number of strings to main(), though I forget the most you can send. Frequently you enter the information you want so it looks something like this:

C:> myProgramName -c +of gcc w

The information after myProgramName can be extracted from argv and used within your program, just like information passed to other functions can be used within your program. In the case of stuff like the above not only is the string itself important, but the position of each string on the line is important. In your case however, I suspect you will be doing something like:

C:> myProgramName 123

where 123 is argv[1] and, once it is converted from a C style string to an int, it can be used to increment the salary of every person listed in your program.

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

main() is a function, a somewhat specialized function, but a function, nonetheless. It has a return type, int, a name, main, and a list of arguments contained within ()s, just like any other function in C++. The two arguments for main() are an int, called argc, and an array of C style strings called argv. argc tells the program how many elements there will be in argv. The first element in argv is the name of the program. If you don't submit values for argc and argv then, by default, argc is 1 and argv[0] is the name of the program. If you want to pass more information to main() than just the name of the program that is passed by default, then you need to use the command line. The command line is visulized when you run your program from a command prompt as opposed to within the modified window used by an IDE, such as Microsoft Visual Studio or Borland or whatever. In general terms, if the background on your screen is black and there is a white C with a flashing >, then you are using the command line to pass stuff to main(). If not, you aren't. You can pass large number of strings to main(), though I forget the most you can send. Frequently you enter the information you want so it looks something like this:

C:> myProgramName -c +of gcc w The information after myProgramName can be extracted from argv and used within your program, just like information passed to other functions can be used within your program. In the case of stuff like the above not only is the string itself important, but the position of each string on the line is important. In your case however, I suspect you will be doing something like:

C:> myProgramName 123

where 123 is argv[1] and, once it is converted from a C style string to an int, it can be used to increment the salary of every person listed in your program.

ok thx i am going to try it now.

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

should i write a new program for parsing command line arguments to an existing project? till now i was thinking i could pass them in the existing project main function.

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

"The most effective way to increase your knowledge is to try new problems in a controlled way. Pick one aspect of C++ that you haven't understood before and write a program that, aside from using that one aspect, uses only things that you have already mastered. Then do what it takes to understand what your program is doing - and why."
- Andrew Koenig and Barabara Moo in 'Ruminations on C++'.

So write a small program; something like this:

#include <iostream>

int main( int argc, char* argv[] )
{
    std::cout << "#arguments (argc): " << argc << '\n' ;
    for( int i=0 ; i<argc ; ++i )
        std::cout << "argument #" << i << " (argv[" << i << "]): " << argv[i] << '\n' ;
}


The run it from the command line with different command lines, look at the output and reason about it. For example, with a program called test:

> ./test
> ./test one two three four
> ./test -one -two=2 three,four

If you are just into arrays, have read something about at, to deepen your understanding write a small program:

#include <iostream>

int main( int argc, char* argv[] )
{
    enum { N = 4 } ;
    short array[N] = { 0, 1, 2, 3 } ;
    std::cout << "#elemebts: " << N << '\n'
              << "size of an element: " << sizeof( array[0] ) << '\n'
              << "size of array: " << sizeof(array) << '\n' ;

    for( int i = 0 ; i < N ; ++i )
         std::cout << "element " << i << "  - address: " << &array[i] << " value: " << array[i] << '\n' ;

    auto p = array ;
    std::cout << "array decays to a pointer. address: " << p << '\n' ;
    ++p ;
    std::cout << "address after increment: " << p << '\n' ;
}


Reason about the output; play around with it - change N from 4 to 7 and run it, change the array of short to an array of double and run it, add some more code which explores some additional aspects and run it. Often, a few lines of code (which you write or reason about) is worth more than a thousand words.

vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

thx for the reply i didnt understood what you mean by this
The run it from the command line with different command lines, look at the output and reason about it. For example, with a program called test:
how do i run it from command line i am using code blocks ?

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

Build the program from within the CodeBlocks IDE.

Start the command line interpreter (Start Menu -> Run... -> cmd on Windows XP ), switch to the directory which contains the executable (typically \bin\Debug) and run it from the command prompt.
For example: > test.exe how now brown cow

vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

thx for the explanation, now i kinda understood what command lines are.command line parameters are values which are given at the beginning of the program rather than using cin and accepting values when the program is executed. am i correct ?

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

i am trying to pass the argv[] value to the method display, but it isn't working

#include <iostream>
#include <stdlib.h>
using namespace std;

class empsalary
{
    int salary;
    public:
    void display(int r)
    {
        salary=5000;
        salary=salary+r;
        cout<<salary<<endl;
    }
};
int main(int argc, char* argv[])
{
   char str[]=argv[];
   int result=atoi(str);
   empsalary e;
   e.display(result);
   return 0;
}
Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

Command line arguments are passed to programs automatically when you use them. You just define and use them if you need them, which is almost never done if you are not using a command line based Linux OS.

What you do to run a program on command line, you call it like "myprogram.exe". If you want to run it with arguments like -debugmode, you can add the parameter "myprogram.exe -debugmode".

Then this first argument is assigned to your char** string array.

Tellalca
Posting Whiz in Training
209 posts since Mar 2010
Reputation Points: 29
Solved Threads: 24
 

so i cant pass command line parameters to specific methods ?

Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

Pass command line parameters to main and you can have main pass it to specific methods.
argv is an array of strings. If you execute the program like:
./a.out abc 12
./a.out will be argv[0], abc will be argv[1], 12 will be argv[2] etc.

So in your program, you should have
result =atoi(argv[1])

v3ga
Junior Poster in Training
95 posts since Oct 2011
Reputation Points: 14
Solved Threads: 4
 

Pass command line parameters to main and you can have main pass it to specific methods. argv is an array of strings. If you execute the program like: ./a.out abc 12 ./a.out will be argv[0], abc will be argv[1], 12 will be argv[2] etc.

So in your program, you should have result =atoi(argv[1])

like this ? it is showing some error.

#include <iostream>
#include <stdlib.h>
using namespace std;
class empsalary
{
int salary;
public:
void display(int r)
{
salary=5000;
salary=salary+r;
cout<<salary<<endl;
  }
};
int main(int argc, char* argv[])
{
int result;
result=atoi(argv[1];
empsalary e;
e.display(result);
return 0;
 }
Srinivas0
Light Poster
42 posts since Nov 2011
Reputation Points: 10
Solved Threads: 0
 

My ability to detect what "some error" is isn't very good. I can't tell if it's becuase there's a missing ) on line 18 or if it's because you sent the wrong set of arguments to main via the command line, whatever.

If "some error" is something displayed by the compiler, what is the error message you get, including what line of code does it reference?

If it compiled and you had run time error(s):
What did you pass on the command line?
What output did you expect?
What output did you get?

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You