C语言经典例79-字符串排序

C语言字符串排序
本文介绍了一个C语言程序,用于输入三个长度小于20的字符串,并按照ASCII码顺序进行排序。程序利用fgets函数读取字符串,使用strcmp函数比较字符串大小,通过swap函数交换字符串位置。

1 题目

字符串排序,输出三个字符串(长度小于20),并将其按照ASCII码顺序排序。

2 分析

首先限制三个字符串的输入,本例利用fgets函数,该函数的原型为:

char *fgets(char *str, int n, FILE *stream)
  • str : 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
  • n : 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
  • stream : 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

其中字符串的长度可以通过sizeof技巧来计算即数组总大小/单个项大小,就是总长度sizeof str1 / sizeof str1[0],stream则为标准输入流stdin

由于本例中只有三个字符串,很容易想到之前做过的三个数的大小比较, 是通过三个if语句判断的,在本例中如何判断字符串大小呢?实际上C语言string.h头文件中包含了字符串比较函数strcmp,它的函数原型如下:

int strcmp(const char *str1, const char *str2)

其中str1str2是要比较的两个字符串,它的返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str2 大于 str1。
  • 如果返回值 = 0,则表示 str1 等于 str2。

该函数的实现原理是通过比较ASCII码值来实现的。
在比较两个字符串大小后,则要交换两字符串,这里可以使用strcpy字符串复制函数来实现,它的原型如下:

char *strcpy(char 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值