Date: Thu, 29 Feb 1996 18:34:17 -0500 (EST) From: Leo Papandreou <leo@rur.com> To: questions@FreeBSD.org Subject: Re: C question: what is wrong with this code Message-ID: <Pine.BSF.3.91.960229183114.8616B-100000@lisa.rur.com> In-Reply-To: <Pine.BSF.3.91.960229164732.5332A-100000@lisa.rur.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Never mind. int keycmp(const void *a, const void *b) { return strcmp(*((char **)a), *((char **)b)); } and in main() ... qsort(table, n, sizeof(char *), keycmp); ... does the trick. On Thu, 29 Feb 1996, Leo Papandreou wrote: > > > I am having a problem with elementary C. The following stub > reproduces the problem exactly. What am I doing wrong? > > > #include <stdlib.h> > #include <stdio.h> > #include <string.h> > > #define TABLESIZE 10 > #define ITERATIONS 10 > > main() > { > > int i, j , n; > char *table[TABLESIZE], buff[1024]; > > for (i = 0; i < ITERATIONS; i++) > { > /* > * populate the table with some random strings > */ > n = random() % TABLESIZE + 1; > for (j = 0; j < n; j++) > { > sprintf(buff, "%d", random() % 10000); > table[j] = strdup(buff); > } > > for (j = 0; j < n; j++) > printf("%s\t", table[j]); > printf("\n"); > > /* so far, so good. Now sort the table */ > qsort(table, n, sizeof(char *), strcmp); > for (j = 0; j < n; j++) > printf("%s\t", table[j]); > printf("\n"); > /* huh!? Doesnt look sorted, does it? */ > > for (j = 0; j < n; j++) > free(table[j]); > } > > exit(0); > } >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.91.960229183114.8616B-100000>