一个对字符串排序的问题
我编写了一个对字符串排序的函数:main()
{ void sort(char (*p)[ ] );
int i ;
char str[10][10] ;
printf("enter array:");
for(i=0;i<10;i++)
scanf("%s",str[i]);
printf("string is:");
for(i=0;i<10;i++)
{printf("%s",str[i]);
printf("\n");
}
printf("string sort :");
sort(str);
for(i=0;i<10;i++)
{printf("%s",str[i]) ;
printf("\n") ;
}
}
void sort(char (*p)[10])
{int i, j ;
char temp[10];
for(i=0;i<9;i++)
for(j=i;j<9-i;j++)
{if(strcmp((p+i),(p+j+1))>0)
{strcpy(temp,(p+i));
strcpy((p+i),(p+j+1));
strcpy((p+j+1),temp);
}
}
}
可是运行此函数时能够运行但是不能得到正确的结果,不知哪里出了错误。请高手指点……
在此谢谢了!
----------------解决方案--------------------------------------------------------
这可是用二维数组处理字符串的问题,不要用指针数组处理,那样太简单了
----------------解决方案--------------------------------------------------------
for(i=0;i<9;i++)
for(j=i;j<9;j++)
{if(strcmp((p+i),(p+j+1))>0)
{strcpy(temp,(p+i));
strcpy((p+i),(p+j+1));
strcpy((p+j+1),temp);
}
}
----------------解决方案--------------------------------------------------------
我用3楼的方法运行了一编,嘿真对了,3楼真了不起,高手啊
----------------解决方案--------------------------------------------------------
sort → Sort
printf("%s",str[i]);printf("\n"); →printf("%s\n",str[i]);
排序部分改变下指针就可以了,不需要复制串
----------------解决方案--------------------------------------------------------