用指针数组将字符串排序,结果不对,哪里错了

#include<stdio.h>
#include<string.h>

void sort(int n,char a[][])
{
char *b[10];//指针数组指向每个字符串第一个字符
int i,j;
for(i=0;i<n;i++){
b[i]=a[i];
}
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++){
if(strcmp(b[j],b[j+1])<0){
char *tmp=*b[j];
*b[j]=*b[j+1];
*b[j+1]=tmp;
}
}
}//冒泡排序
for(i=0;i<n;i++){
printf("%s\n",b[i]);
}
}//输出结果

void main()
{
char arr[10][10];
int i,n;
printf("输入字符串的个数:");
scanf("%d",&n);
printf("输入字符串:");
for(i=0;i<n;i++){
scanf("%s",arr[i]);
}
sort(n,arr);
}

你要判断字符串的长度啊,然后根据长度去循环
或者在循环过程中判断是不是0
不要把0参与排序
那样排完0全跑最左边去了
那你的字符串一开始就是结束符,能对吗