/************************************************************************** GDB Test File 1 - contains several errors ***************************************************************************/ #include #include #define ERROR_VALUE -1 /**************************************************************************/ int Factorial( int value ) { int counter, prod; if ( value < 0 ) { fprintf(stderr,"\nERROR: cannot calculate factorial for %d < 0\n",value); return( ERROR_VALUE ); } else if ( value == 0 ) { return( 1 ); } else { prod = 1; for ( counter = 1; counter <= value ; counter += 1 ); { prod *= counter; } /* for */ } /* if */ return( prod ); } /* Factorial */ /**************************************************************************/ void main( void ) { int value, EndOfFileFlag, ret_value; for( ; ; ) { printf("\nEnter a number [-D or -999 for EOF]:); EndOfFileFlag = scanf("%d",value); if ( EndOfFileFlag == EOF ) break; if ( value == -999 ) break; if ( EndOfFileFlag != 1 ) { fprintf(stderr,"\nERROR: cannot calculate factorial for char or string\n"); exit(-2); } /* if */ ret_value = Factorial( value ); if (ret_value != ERROR_VALUE ) { printf("\n%d factorial is %d\n",value, ret_value ); } /* if */ } /* for */ } /* main */