Click on ptrs2fncs_argcv.c to get source.
/* this example is taken from the Unix qsort man page */
/* added command line arguments to make arrays of settable length
with random integer residues modulo a settable modulus
*/
#include <stdlib.h>
#include <stdio.h>
int cnt;
#ifdef DEFQSORT
/* qsort declaration (in stdlib.h) */
extern void qsort(void* A, /* array */
size_t n, /* nr. of elements */
size_t s, /* size of each element */
int (*comp) /* pointer to comparison function */
(const void* ampA_i, /* pointer to array elem */
const void* ampA_j /* pointer to array elem */
)
);
#endif
static int intcompare(int *i, int *j)
{
cnt = cnt+1;
if (*i < *j)
return (-1);
if (*i > *j)
return (1);
return (0);
}
int main(int argc, char** argv)
/* run as "a.out 100 25 11", where 100 is the size to be tested,
and 25 is the range of entries;
11 is the seed for the random number generator; */
{
int *array, i, size, mod, seed;
if (argc < 4)
{
fprintf(stderr,
"Call as \"%s" " <size> <mod> <seed>\"\n",
argv[0]
);
exit(1);
};
sscanf(argv[1], "%d", &size); sscanf(argv[2], "%d", &mod);
array = (int*) calloc(size, sizeof(int));
sscanf(argv[3], "%d",&seed);
srand(seed);
for(i = 0; i < size; i++) array[i] = rand() % mod;
printf("\nInput array\n");
for(i=0;i<size;i++) printf("%3d ",array[i]);
printf("\n");
qsort( (void *) array
, (size_t) size
, sizeof(int)
,(int (*)(const void*
,const void*)) intcompare
);
printf("qsort'ed array after %d" " comparisons\n", cnt);
for(i = 0; i < size; i++) printf("%3d ", array[i]);
printf("\nqsort'ed array after %d" " comparisons\n", cnt);
free(array); return 0;
}/* main */