W ję zyku C++ funkcja main moż e być róż nie definiowana: int main ( void )
int main ( int argc )
Parametry funkcji
int main ( int argc, const char *argv[ ] )
main
gdzie
argc - liczba argumentów wywołania + 1
argv[ 0 ] - wskazanie na tekst zawierają cy pełną ś cież kę wywołania programu
argv[ 1 ] - wskazanie na tekst pierwszego argumentu wywołania argv[ 2 ] - wskazanie na tekst drugiego argumentu wywołania argv[ 3 ] - wskazanie na tekst trzeciego argumentu wywołania
............................... i.t.d.
Tomasz Marks - Wydział MiNI PW
-1-
Tomasz Marks - Wydział MiNI PW
-2-
Parametry funkcji main (2)
Parametry funkcji main (2a)
N.p. Po uruchomieniu z linii polceń programu mainpars komendą
N.p. Po uruchomieniu z linii polceń programu mainpars komendą mainpars exp 0
mainpars exp,0
moż e być na przykład:
bę dzie na przykład:
argc == 3
argc == 2
argv[ 0 ]
" d : \\ ctests \\ mainpars \\ release \\ mainpars.exe "
argv[ 0 ]
" d : \\ ctests \\ mainpars \\ release \\ mainpars.exe "
argv[ 1 ]
" exp "
argv[ 1 ]
" exp,0 "
argv[ 2 ]
" 0 "
argv[ 2 ]
" 0 "
UWAGA: Parametry muszą być separowane odstę pami.
Tomasz Marks - Wydział MiNI PW
-3-
Tomasz Marks - Wydział MiNI PW
-4-
#include<stdio.h>
#include<stdlib.h>
Parametry funkcji main (4)
#include<math.h>
int main ( int argc, const char *argv[ ] )
{
N.p. Po uruchomieniu z linii polceń programu mainpars komendą char *txt; double x, val;
puts( argv[ 0 ] );
mainpars exp 0
if ( argc - 3 ) {
puts( "\nProgram wymaga 2 parametrow\n" );
return 1;
program wyś wietli
}
x = atof( argv[2] );
d : \ ctests \ mainpars \ release \ mainpars.exe
switch ( toupper( *argv[1] ) )
{
exponent ( 0.000 ) = 1.000
case 'S': val = sin( x ); txt = "sinus"; break; Press any key to continue_
case 'C': val = cos( x ); txt = "cosinus"; break; case 'E': val = exp( x ); txt = "exponent"; break; default: puts( "\nPoprawne wartosci pierwszego parametru: S, C, E\n" ); return 2;
}
printf( "\n%s(%.3f) = %.3f\n", txt, x, val );
return 0;
}
Tomasz Marks - Wydział MiNI PW
-5-
Tomasz Marks - Wydział MiNI PW
-6-
// mainpars2.c
// mainpars3.c
const char *fname[ ] = { "sinus", "cosinus", "exponent", }; const char *fname[ ] = { "sinus", "cosinus", "exponent", NULL }; double (* fptab[ ]) ( double ) = { sin, cos, exp, }; double (* fptab[ ]) ( double ) = { sin, cos, exp, }; int main ( int argc, const char *argv[ ] )
int main ( int argc, const char *argv[ ] )
{
{
int k;
int k;
if ( argc - 3 )
if ( argc - 3 )
{
{
puts( "\nProgram wymaga 2 parametrow\n" );
puts( "\nProgram wymaga 2 parametrow\n" );
return 1;
return 1;
}
}
switch ( toupper( *argv[1] ) )
{
for ( k = 0; fname[k]; k++)
case 'S': k = 0; break;
if ( *fname[k] == tolower( *argv[1] ) )
case 'C': k = 1; break;
{
case 'E': k = 2; break;
printf( "\n%s(%.3f) = %.3f\n",
default: puts( "\nPoprawne wartosci pierwszego parametru: S, C, E\n" ); fname[k], atof( argv[2] ), fptab[k]( atof( argv[2]) ) ); return 2;
return 0;
}
}
printf( "\n%s(%.3f) = %.3f\n", fname[k], atof( argv[2] ), fptab[k]( atof( argv[2]) ) ); puts( "\nPoprawne wartosci pierwszego parametru: S, C, E\n" ); return 0;
return 2;
}
}
Tomasz Marks - Wydział MiNI PW
-7-
Tomasz Marks - Wydział MiNI PW
-8-