使用指针的指针对字符串排序

Posted 徐景祥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用指针的指针对字符串排序相关的知识,希望对你有一定的参考价值。

 1 /* Note:Your choice is C IDE */
 2 #include "stdio.h"
 3 #include "string.h"
 4 /*使用指针的指针对字符串排序*/
 5 /*排序是按照汉字的首字母进行*/
 6 /*
 7 *整体思路:1、输出排序前的数组元素
 8             
 9 *           2、输出排序后的数组元素
10             
11 */
12 //自定义函数sort(),实现对字符串的排序
13 sort(char*strings[],int n)//参数1:字符型指针数组。参数2:整型变量
14 {
15     char *temp;        //声明字符型指针变量
16     int i,j;        //声明整型变量
17     for(i=0;i<n;i++)            //之所以要两个循环,因为每个数都要和其他比较
18     {
19         for(j=i+1;j<n;j++)
20         {
21             /*
22             *strcmp如何实现两个字符的比较??
23             ① str1小于str2,返回负值或者-1(VC返回-1);              
24             ② str1等于str2,返回0;
25             ③ str1大于str2,返回正值或者1(VC返回1);
26             */
27             if(strcmp(strings[i],strings[j])>0)//比较两个字符
28             {
29                 temp=strings[i];//交换字符位置
30                 strings[i]=strings[j];
31                 strings[j]=temp;
32                 }
33             }
34         }
35     }
36 
37 void main()
38 {
39     int n=5;
40     int i;
41     //char *strings[];
42     char **p;//指向指针的指针变量
43     char *strings[]={"c","a","d","b","e"};//初始化字符串数组
44     p=strings;//指针指向数组首地址
45     printf("排序前的数组:\\n");
46     for(i=0;i<n;i++)
47     {
48         printf("%s\\n",strings[i]);
49     }
50     sort(p,n);//调用排序自定义过程
51     printf("\\n排序后的数组:\\n");
52     for(i=0;i<n;i++)//循环输出排序后的数组元素
53     {
54         printf("%s\\n",strings[i]);
55     }
56     getch();
57 }
58 
59 /*总结:
60 1、
61 两个数字交换一般思路,需要另一个载体,
62 *例如a和b数值交换,需要借助c,
63 *把a的数值赋值给c,
64 *再把b的数值赋值给a,
65 *再把c的数值赋给a,
66 *从而实现a和b数值的交换
67 2、双重for循环用于每个数都要与其他数比较
68 */

 

以上是关于使用指针的指针对字符串排序的主要内容,如果未能解决你的问题,请参考以下文章

//利用指针删除母串中的指定子串

错误:'指向成员的指针对托管类无效'

求助mshtmlIHTMLElement等指针问题

C 语言二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一二 模型数据拷贝到 三 模型中 并 排序 )

CPP自定义排序--针对智能指针

void类型详解