#include <stdio.h> #include "stdlib.h" #define N 256 //宏定义 //比较两个字符串的大小 int str_compare(const char* src,const char* dst) { int ret = 0; if (src == dst) { return 0; } if (dst == NULL) { return -1; } while (!(ret = *(unsigned char*)src - *(unsigned char*)dst)&& *dst) { ++src,++dst; } if (ret < 0) { ret = -1; } else if (ret > 0) { ret = 1; } return ret; } //排序函数 void sort_string( char *strs[],int len) { int i=0,j; for(i=0;i<len;i++) { for ( j = 1; j < len - i; j++) { if(str_compare(strs[j-1],strs[j]) >0) { char *tmp = 0; tmp = strs[j-1]; strs[j-1] = strs[j]; strs[j] = tmp; } } } //输出排序后的字符串 for( i=0;i<len;i++) { printf("%s\n",strs[i]); } } int main() { //声明二维数组 char str[N][256]; //声明指针数组 char *ps[N]; int i=0,j; for(j=0;j<N;j++) ps[j]=NULL; printf("输入字符串(每个字符串间换行输入,空格结束输入):\n"); for(;i<N;i++) { gets(str[i]); if (str_compare(str[i]," ")==0)//空格串作为字符串输入结束符 break; ps[i]=str[i]; } printf("一共有 %d 个字符串.\n",i); printf("排序后的字符串为:\n"); sort_string(ps,i);//调用排序函数 printf("\n"); system("pause"); return 0; }
时间: 2024-10-02 10:22:26