字符串排序
Posted Ston.V
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串排序相关的知识,希望对你有一定的参考价值。
人麻了,太菜了。
void str_exchange(char (*a)[MAX_FILEPATH_LEN],char (*b)[MAX_FILEPATH_LEN])
char *tmp = (char *)malloc(MAX_FILEPATH_LEN*sizeof(char));
memset(tmp,0,sizeof(tmp));
strcpy(tmp,*a);
strcpy(*a,*b);
strcpy(*b,tmp);
free(tmp);
void bubble_sort(char (*allFilePath)[MAX_FILEPATH_LEN],int dimension)
int flag;
for(int i=0;i<dimension;i++)
flag = 0;
for(int j=0;j<dimension-i-1;j++)
if(strcmp(allFilePath[j],allFilePath[j+1])>0)
str_exchange(&allFilePath[j],&allFilePath[j+1]);
flag = 1;
if(!flag)
break;
char allFilePath[TOTAL_SWITCH_TURNS_NUM][MAX_FILEPATH_LEN] = "";
int main(void)
//dump data to allFilePath...
//ready to sort
bubble_sort(allFilePath,10);
return 0;
注意点:
1.首先应该明确,二维数组allFilePath的类型不是char** !!!,而是char (*)[ ],即数组指针类型,数组的每个指针指向字符数组,这在写bubble_sort的第一个形参时要注意。
2.既然allFilePath是指针,我们想要修改其指向的内容,就不需要实参传递allFilePath的指针,而是直接传递其本身即可。
3.同样是传参,在设计str_exchange是,我们传入的数组的指针,不是char **,所以需要写成char (*)[ ]的形式;(这里要理解指向数组的指针和指向数组首元素的指针,他们的类型是不同的,虽然存的值相同,我们交换的整个字符数组,而不改变某个字符,所以这里应该用字符数组的指针)
以上是关于字符串排序的主要内容,如果未能解决你的问题,请参考以下文章