Parametry funkcji main (1)

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-

// mainpars1.c

#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-