C语言—字符串排序

作者:追风剑情 发布于:2019-11-11 19:36 分类:C

示例

//Visual Studio中加上这句才可以使用scanf()
//否则只能使用scanf_s()
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define SIZE 81 // 限制字符串长度,包括\0
#define LIM 20  // 可读入的最大行数
#define HALT "" // 空字符串停止输入

void stsrt(char *strings [], int num); /* 字符串排序函数 */
char * s_gets(char * st, int n);

//argc: 参数个数 argv[]: 参数数组
int main(int argc, char *argv[])
{
	char input[LIM][SIZE]; //储存输入的数组
	char *ptstr[LIM]; //内含指针变量的数组
	int ct = 0;
	int k;

	printf("Input up to %d lines, and I will sort them.\n", LIM);
	printf("To stop, press the Enter key at a line's start.\n");
	while (ct < LIM && s_gets(input[ct], SIZE) != NULL
		&& input[ct][0] != '\0')
	{
		ptstr[ct] = input[ct]; //设置指针指向字符串
		ct++;
	}
	stsrt(ptstr, ct);
	puts("\nHere's the sorted list:\n");
	for (k = 0; k < ct; k++)
		puts(ptstr[k]);

	putchar('\n');

	system("pause");
	return 0;
}

char * s_gets(char * st, int n)
{
	char * ret_val;
	int i = 0;
	ret_val = fgets(st, n, stdin);
	if (ret_val) //即,ret_val != NULL
	{
		while (st[i] != '\n' && st[i] != '\0')
			i++;
		if (st[i] == '\n')
			st[i] = '\0';
		else
			while (getchar() != '\n')
				continue;
	}
	return ret_val;
}

/* 字符串-指针-排序函数 */
void stsrt(char *strings[], int num)
{
	char *temp;
	int top, seek;
	for (top = 0; top < num - 1; top++)
		for (seek = top + 1; seek < num; seek++)
			//利用字符串比较函数
			if (strcmp(strings[top], strings[seek]) > 0)
			{
				temp = strings[top];
				strings[top] = strings[seek];
				strings[seek] = temp;
			}
}

运行测试
1111.png

标签: C语言

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号