rendered paste body#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 5
int str_sort(const void *a, const void *b)
{
return strcmp(*(char **)a, *(char **)b);
}
void *alloc_array(void *prev, size_t *sp, size_t use, size_t size)
{
void *temp;
temp = prev;
if (prev) {
if (use % (size * SIZE) == 0) {
*sp += size * SIZE;
temp = realloc(temp, *sp);
memset(&((char *)temp)[*sp - (size * SIZE)], 0, size * SIZE);
}
}else{
*sp = size * SIZE;
temp = malloc(*sp);
memset(temp, 0, *sp);
}
return temp;
}
int main(void)
{
char temp[64];
char gomi;
char **word_list = NULL;
size_t size;
size_t use;
int c;
int i;
c = -1;
use = 0;
while (1) {
scanf("%[^\n]%c", temp, &gomi);
if (strncmp("END", temp, 4) == 0) {
break;
}
word_list = alloc_array(word_list, &size, use, sizeof(char *));
c++;
word_list[c] = malloc(sizeof(char) * 64);
strncpy(word_list[c], temp, 64);
use += sizeof(char *);
}
printf("Before: \n");
for (i = 0; i <= c; i++) {
printf("[%d] = %s\n", i, word_list[i]);
}
qsort(word_list, c + 1, sizeof(char *), str_sort);
printf("After: \n");
for (i = 0; i <= c; i++) {
printf("[%d] = %s\n", i, word_list[i]);
}
return 0;
}