All pastes #1502068 Raw Edit

無名

public c v1 · immutable
#1502068 ·published 2009-07-21 14:26 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 5int 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;}