BCPadを利用してCを学んでいるのですが、ちょっと躓いてしまったところが出てきたので、教えてください。

二次元配列を用意し、それをソートするだけのプログラムなんですが、
なんかうまいこと動作しません。

/* -- ソース -- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXDATA 3
#define MAXSTR 256
int cmp(const char * , const char *);

int main(void){
char (*data)[MAXSTR];
int i;

data = malloc(sizeof(*data) * MAXDATA);

for(i = 0 ; i < MAXDATA ; i++)
printf("%d人目の名前 -> " , i + 1);  scanf("%s" , data[i]);

qsort(data , MAXDATA , sizeof(char *) , (int(*)(const void * , const void *))cmp);

for(i = 0 ; i < MAXDATA ; i++)printf("%s\n" , data[i]);

return 0;
}
int cmp(const char *s1 , const char *s2){
return strcmp(s2 , s1);
}