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

概述

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

#include

#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)

{

char *temp=0;

temp = v[i];

v[i] = v[j];

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语言)的全部内容,希望文章能够帮你解决c语言对字符串本身进行排序,对文本中的字符串进行排序(C语言)所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部