/*
john pfeiffer 19sep07 Using command line arguments/parameters in C
04jan09 updated to try to prevent buffer overflow
*/
#include <stdio.h>
#define NUMBER_OF_PARAMETERS 2 /* =1 b/c the 1st parameter is the program name */
#define MAX_PARAMETER_SIZE 512 /* the max size of a given parameter */
void program_usage_help( char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE] )
{ printf("%s filename.txt",safe_argv[0]);
}/* end program_usage_help */
void safe_parameters_array( int argc, char* argv[], char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE] )
{
int i=0, k=0;
for(i=0; i<argc; i++)
{ /* params are null terminated strings */
while( (k < MAX_PARAMETER_SIZE) && (argv[i][k] != '\0') )
{
safe_argv[i][k] = argv[i][k];
k++;
}
safe_argv[i][k] = '\0'; /* we must always null terminate a string! */
k=0;
printf("\nsafe_argv[%d]=%s\n",i,safe_argv[i]);
}
}/* end safe_parameters_array function */
int main(int argc, char* argv[])
{
char safe_argv[NUMBER_OF_PARAMETERS][MAX_PARAMETER_SIZE];
if( (argc > NUMBER_OF_PARAMETERS) || (argc < NUMBER_OF_PARAMETERS) )
{ printf("Wrong number of parameters, should be %d parameters",NUMBER_OF_PARAMETERS);
exit(1); /* quit program with error */
}
safe_parameters_array( argc, argv, safe_argv );
return 0;
}/* end main */