程序有多个问题,最大的问题是野指针,也就是你的指针没有分配内存(这个是初学者很容易犯的错)另外,你的循环,交换也不正确,以下是改好的,你参考下#include<stdio.h>#include <stdlib.h>#include<string.h>int main(void){ int i,j; char *str[5],*t; t=(char *)malloc(100); printf("Enter 5 strings\n"); for(i=0; i<5; i++) { str[i]=(char *)malloc(100); gets(str[i]); } for(i=0; i<4; i++) { for(j=0; j<4-i; j++) { if(strcmp(str[j],str[j+1])>0) { strcpy(t,str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],t); } } } for(i=0; i<5; i++) printf("%s\n",str[i]); return 0;}