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

1 题目

函数:sort()

功能:使用指向指针的指针对字符串排序

描述:

使用指向指针的指针对字符串排序,输出是按照字母顺序进行排序

2 思路

a. 熟悉指向指针的指针的使用
char *nums[]={"", ""};
char **p;
p = nums;

熟悉 *p 指向的是 nums[0] 的首地址

b. 引用模块#include <string.h>

使用函数 int strcmp(const char *str1, const char *str2) 进行字符串的比较

该函数返回值如下:

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

3 代码

#include <stdio.h> 
#include <string.h>
#define N 10

/**
函数:fun()
功能:使用指向指针的指针对字符串排序
描述:
使用指向指针的指针对字符串排序,输出是按照字母顺序进行排序
**/

void sort(char **p) {
    char *temp;     // 排序交换时的临时变量
    for (int i = 0; i < N; ++i) {
        for (int j = i+1; j < N; ++j) {
            if (strcmp(*(p+i), *(p+j)) > 0) {   // 使用strcmp进行字符串的比较
                temp = *(p+i);
                *(p+i) = *(p+j);
                *(p+j) = temp;
            }
        }
    }
}

int main(int argc, char const *argv[]) { 
    int n = 5; 
    char **p;
    char *nums[] = {
        "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"
    };
    p = nums;           // 使用指向指针的指针指向字符串数组
    printf("排序前的数组内容为:\n");
    for (int i = 0; i < N; ++i) {
        printf("%s ", *(p+i));
    }
    printf("\n");

    sort(p);
    printf("排序后的数组内容为:\n");
    for (int i = 0; i < N; ++i) {
        printf("%s ", *(p+i));
    }
    printf("\n");
}

示例结果:

$ gcc ex016.c -o demo
$ ./demo
排序前的数组内容为:
one two three four five six seven eight nine ten
排序后的数组内容为:
eight five four nine one seven six ten three two
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,113评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,926评论 0 2
  • 今天上午陪老妈看病,下午健身房跑步,晚上想想今天还没有断舍离,马上做,衣架和旁边的的布衣架,一看乱乱,又想想自己是...
    影子3623253阅读 2,935评论 3 8