关于动态分配字符串又一问题 与qsort有关
程序代码:#include <stdio.h>
#include <string.h>
#define STR_LEN 30
#define MAX_LEN 30
int compares_str(void *p, void *q);
main()
{
char *p[MAX_LEN], str[STR_LEN+1];
int n=0, num_p=0, i, j, k;
for (;;)
{
if (num_p>MAX_LEN)
{
printf("-- There is no place left --");
break;
}
printf("Enter the sentence: ");
scanf(" %s",&str);
if (strcmp(str,"0")==0)
break;
while (getchar()!='\n')
;
p[n]=malloc(strlen(str)+1);
if (p[n]==NULL)
{
printf("-- malloc error --");
break;
}
strcpy(p[n++],str);
num_p++;
}
qsort(p,n,STR_LEN+1,compares_str);
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
if (strcmp(p[i],p[j])==0)
{
free(p[j]);
for (k=j;k<n;k++)
p[k]=p[k+1];
}
}
}
for (i=0;i<n;i++)
printf("%s\n",p[i]);
getch();
return 0;
}
int compares_str(void *p, void *q)
{
return strcmp((char *)p,(char *)q);
}屏幕上显示都是null
不知道又是怎么回事
望解答









