Thu Nov 13, 2008 6:07 pm
#include <stdio.h>
#include <string.h>
/*
* Program to read a list of strings from standard input and print them in
* sorted order. This uses a simple selection sort.
*/
#define MAX_STRING_SPACE 1000
#define MAX_NUM_STRINGS 250
#define MAX_STRING_SIZE 50
int main(void)
{
/* Where the general string contents are stored. */
char string_space[MAX_STRING_SPACE];
/* The start of each string. */
char *strings[MAX_NUM_STRINGS];
/* Read the strings. */
char buf[MAX_STRING_SIZE];
char *next_space = string_space;
int inloc = 0;
while(scanf("%s", buf) == 1) {
/* Find the length of the string and see if it fits. */
int length = strlen(buf) + 1;
if(next_space + length >= string_space + MAX_STRING_SPACE)
break;
if(inloc >= MAX_NUM_STRINGS)
break;
/* Place the string into the structure. */
strings[inloc++] = next_space;
strcpy(next_space, buf);
next_space += length;
}
printf("--------------------------------------------------\n");
/* Perform the sort. Outer loop goes through destination of the
minimum string. */
int strloc;
for(strloc = 0; strloc < inloc - 1; ++strloc) {
/* Scan the remaining strings for ones smaller. */
int scan;
for(scan = strloc + 1; scan < inloc; ++scan) {
if(strcmp(strings[strloc], strings[scan]) > 0) {
/* Exchange the strings. */
char *tmp = strings[strloc];
strings[strloc] = strings[scan];
strings[scan] = tmp;
}
}
}
/* Print 'em. */
for(strloc = 0; strloc < inloc; ++strloc) {
printf("%s\n", strings[strloc]);
}
}
Codemiles.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com
Powered by phpBB © phpBB Group.