следующий предложенный код:
- безупречная компиляция
- выполняет желаемую функциональность
- содержит хороший метод для отображения сообщения об ошибке «USAGE»
и теперь предложенный код:
#include <stdio.h> // fprintf(), printf()
#include <stdlib.h> // exit(), EXIT_FAILURE
#include <ctype.h> // isdigit()
int main( int argc, char *argv[] )
{
if(argc != 2)
{
fprintf( stderr, "USAGE: %s <saesar key>\n", argv[0] );
exit( EXIT_FAILURE );
}
int validKey = 1; // indicate valid key
for(int i = 0; argv[1][i]; i++)
{
//check each character at the command line is a decimal digit
if ( !isdigit( argv[1][i] ) )
{
validKey = 0; // indicate invalid key
}
}
if( validKey )
{
printf("success\n");
printf("%i\n", atoi(argv[1]) );
}
else
{ // invalid key
printf( "key: %s is invalid\n", argv[1] );
}
}