示例
//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; } }