[#8]
Re: int main(int argc, char * argv[])
@ZED^lM,
post #1
Witam,
Ja proponuje na dobry początek takie rozwiązanie.
int main( int argc, char* argv[] )
{
const int SUCCESSFULY_CONVERTED_FIELDS = 1
int i; /* parsowana liczba */
/*
* nie zapomnij sprawdzic czy argv[ 1 ] istnieje
*/
if( SUCCESSFULY_CONVERTED_FIELDS == sscanf( argv[ 1 ], "%d", &i ) )
{
/* i = sparsowana liczba
* teraz możesz sprawdzić czy to cyfra czy liczba
*/
}
/*
* ...
*/
}
Rozwiązanie jest dobre ale parametry typu "41as" są rozpoznawane jako "41". Aby pozbyć się takich przypadków ( jeśli chcesz ) to trzeba dodać jeszcze jedną deklarację.
char c; /* wartownik poprawnosci konca parametru */
Pozostaje zmienić też kawałek
sscanf( argv[ 1 ], "%d", &i )
na
sscanf( argv[ 1], "%d%c", &i )
I wtedy parametry typu "1asd" nie będa brane pod uwagę. Warto też się zastanowić czy parametry typu "+12" powinny być parsowane czy uznane za błędne ( wtedy trzeba zmienić podejście i zrezygnować ze sscanf i korzystać ze isdigit ).
Pozdrawiam
Ostatnia modyfikacja: 24.10.07 08:27