C Primer Plus学习字符串和字符串函数(13)
采用选择排序算法排序指针来排序字符串:
#include <stdio.h> #include <string.h> #define SIZE 81 /*限制字符串长度,包括 */ #define LIM 20 /*可读入的最多行数*/ #define HALT "" /*空字符串停止输入*/ void stsrt(char * strings[], int num); /*字符串排序函数*/ char * s_gets(char * st, int n); int main(void) { char input[LIM][SIZE]; /*储存输入的数组*/ char * ptstr[LIM]; /*内含指针变量的数组*/ int ct = 0; /*输入计数*/ int k; /*输出计数*/ printf("Input up to %d lines, and I will sort them. ", LIM); printf("To stop, press the Enter key at a lines start. "); while (ct < LIM && s_gets(input[ct], SIZE) != NULL && input[ct][0] != ) { ptstr[ct] = input[ct]; /*设置指针指向字符串*/ ct++; } stsrt(ptstr, ct); /*字符串排序函数*/ puts(" Heres the sorted list: "); for (k = 0; k < ct; k++) puts(ptstr[k]); /*排序后的指针*/ return 0; } 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; } } char * s_gets(char * st, int n) { char * ret_val; int i = 0; ret_val = fgets(st, n, stdin); if (ret_val) { while (st[i] != && st[i] != ) i++; if (st[i] == ) st[i] = ; else while (getchar() != ) continue; } return ret_val; }
运行结果如下:
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
机器学习-机器学习试题(一)