您的位置:首页 > 编程语言 > C语言/C++

C语言-对输入n个字符串进行排序(无导入string.h)

2015-06-01 10:57 561 查看
#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
[256];
//声明指针数组
char *ps
;

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: