Re: simple test of main signature fails
Comp1597@yahoo.co.uk wrote:
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[i] << 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
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask