#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;
}
C语言-对输入n个字符串进行排序(无导入string.h)
最新推荐文章于 2023-11-16 20:39:16 发布