| /* Test for strverscmp() */ |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <string.h> |
| |
| #define MAX_STRINGS 256 |
| #define MAX_LINE_SIZE 32 |
| |
| static int |
| compare (const void *p1, const void *p2) |
| { |
| return strverscmp (*((char **) p1), *((char **) p2)); |
| } |
| |
| int |
| main (int argc, char *argv[]) |
| { |
| char line[MAX_LINE_SIZE + 1]; |
| char *str[MAX_STRINGS]; |
| int count = 0; |
| int i, n; |
| |
| while (count < MAX_STRINGS && fgets (line, MAX_LINE_SIZE, stdin) != NULL) |
| { |
| n = strlen (line) - 1; |
| |
| if (line[n] == '\n') |
| line[n] = '\0'; |
| |
| str[count] = strdup (line); |
| |
| if (str[count] == NULL) |
| exit (EXIT_FAILURE); |
| |
| ++count; |
| } |
| |
| qsort (str, count, sizeof (char *), compare); |
| |
| for (i = 0; i < count; ++i) |
| puts (str[i]); |
| |
| return EXIT_SUCCESS; |
| } |