关于动态分配字符串又一问题 与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
不知道又是怎么回事
望解答