我是靠谱客的博主 傻傻方盒,最近开发中收集的这篇文章主要介绍对文本中的字符串进行排序(C语言),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对文本中的字符串进行排序,文本中一行一个字符串。

#include <stdio.h>
#include <string.h>
#define Limt 100
/*一行文本的最大长度*/
#define Maxlen 10000
#define Maxline 1000
char string[Maxlen];
/* 存放所有的字符串*/
char *linesp[Maxline];
/* 指针数组,每一个元素如 linesp[i] 存放string[]中不同字符串的首地址*/
int getline(char s[], int max);
void str_order( char *v[], int n);
void writelines(char *v[], int n);
void swap(char *a, char *b);
int readlines(char *linesp[], int max);
int main()
{
int nlines;
/*字符串的总的个数(行数)*/
if((nlines = readlines(linesp,Maxline)) <= 0) {
printf("Error");
}
else {
str_order(linesp, nlines);
writelines(linesp, nlines);
}
return 0;
}
/******* 函数的功能*******/
/**读入一行文本(包括'n')到s[]中,最后以''结束,返回字符串的长度'n'也算在内**/
/**若文本长度超过s[]的最大长度则丢弃超过的长度,s[]最后以''结束,返回长度max-1(即''所在的位置)**/
int getline(char s[], int max)
{
int i, c;
for(i=0; i< max-1 && (c = getchar()) != EOF && c != 'n'; i++)
s[i] = c;
if(c == 'n')
s[i++] = c;
s[i] = '';
return i;
}
/***
将字符串数组 t 复制到 字符串数组m 中
***/
void strcpy( char *s, char *t)
{
while(*s++ = *t++);
}
/***将文本行存放在 string[Maxlen] 中,返回文本的行数 ***/
/*** linesp[Maxline] 每一个元素如 linesp[i] 为string[]中不同字符串的首地址 **/
int readlines(char *linesp[], int max)
{
char s[Limt];
/* 存放临时读入的一行字符串*/
int len;
/* 一行文本的长度 */
int nlines = 0;
char *p = string;
//&&
while( (len = getline(s,Limt)) > 0 ) {
if( nlines >= Maxline || (Maxline + string - p) < 0 ) {
return -1;
}
else {
s[len-1] = '';
strcpy( p, s);
linesp[nlines++] = p;
p = p + len;
}
}
return nlines;
}
/***比较字符串的大小***/
int strcmp(char *s, char *t)
{
int i=0;
while(*s == *t)
if(*s == '')
return 0;
return *s - *t;
}
 /***   交换两个地址用数组的方法交换 v[]的首地址给形参,
**实参和形参指向同一段内存,在函数中改变形参,实参也随之改变
 void swap(char *v[], int i, int j)
{
<span style="white-space:pre">	</span> char *temp=0;
temp = v[i];
<span style="white-space:pre">	</span> v[i] = v[j];
<span style="white-space:pre">	</span> v[j] = temp;
} */

/***
交换两个地址
***/
/***
传递给函数的的是字符串地址的地址:swap(&v[j-1],&v[j]),*a 即*&v[j-1]还是一个指针,指向一个地址***/
void swap(char **a, char **b)
{
char *temp=0;
temp = *a;
*a = *b;
*b = temp;
}
/**** 最字符串数组进行排序 ****/
void str_order( char *v[], int n)
{
int i, j;
for(i=n;i>0;i--)
for(j=i;j>0;j--) {
if( strcmp( v[j-1], v[j] )>0 )
swap(&v[j-1],&v[j]);
}
}
/****将字符行按顺序输出****/
void writelines(char *v[], int n)
{
int i;
for(i=0; i < n; i++)
printf("%sn",v[i]);
getchar();
}

互相学习,共同进步。

最后

以上就是傻傻方盒为你收集整理的对文本中的字符串进行排序(C语言)的全部内容,希望文章能够帮你解决对文本中的字符串进行排序(C语言)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部