simple test of main signature fails

C

Comp1597

On Visual Studio 2008 Express, I compiled and ran the following
program:

#include "stdafx.h"
#include <iostream>


int main(int argc, char * argv[])
{
std::cout << argc;

}

At the Visual Studio Command Prompt, I entered ProjectName.exe(3, "a",
"b", "c")

My thinking was that argc denotes the number of string arguments to
the main function. This is indicated by the 3 strings "a", "b" and
"c" and by the first integer parameter which I set to 3.
So I expected that argc==3 and that therefore the output would be 3.
However, the output was 2

I'd be grateful if someone could explain this.

Thanks in advance.
 
V

Victor Bazarov

On Visual Studio 2008 Express, I compiled and ran the following
program:

#include "stdafx.h"
#include <iostream>


int main(int argc, char * argv[])
{
std::cout << argc;

Why not go the extra step and also do

for (int i = 0; i < argc; ++i)
std::cout << argv << std::endl;

It would help you see what you get...
}

At the Visual Studio Command Prompt, I entered ProjectName.exe(3, "a",
"b", "c")

My thinking was that argc denotes the number of string arguments to
the main function. This is indicated by the 3 strings "a", "b" and
"c" and by the first integer parameter which I set to 3.
So I expected that argc==3 and that therefore the output would be 3.
However, the output was 2

I'd be grateful if someone could explain this.

The arguments to 'main' are supplied by the execution environment in the
system- and implementation-specific manner. How you are supposed to
supply the arguments to the execution environment when you make your
program run is also system-specific. Try

ProjectName.exe a b c

(the command processor in DOS/Windows collects the strings from the
line, along with the program name, and puts them in the array which it
passes then to the program). You should see 4 as the output since there
are four independent strings (spaces are delimiters) in the command
line. Also try

ProjectName.exe "a b c"

which should give you 2, but the quotes will be removed from the second
argument and the spaces will become part of the argument string.

Experiment!

Good luck!

V
 
R

red floyd

On Visual Studio 2008 Express, I compiled and ran the following
program:

#include "stdafx.h"
#include <iostream>


int main(int argc, char * argv[])
{
std::cout << argc;

}

At the Visual Studio Command Prompt, I entered ProjectName.exe(3, "a",
"b", "c")

Why do you think you need the parens? Does any other progra need parens
like that?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top