首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言指標陣列實作字串排序:以國家名稱排序為例

     編輯:程式設計綜合問答

核心概念

  • char *names[N]:指標陣列,每個元素指向一個字串首址。
  • 排序時僅交換指標,不移動字串內容,效率高。

完整範例


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void *a, const void *b) {
    return strcmp(*(const char**)a, *(const char**)b);
}

int main() {
    int n;
    printf("國家個數: ");
    scanf("%d", &n);
    getchar(); // 吸收換行

    char **names = malloc(n * sizeof(char*));
    char buf[256];
    for (int i = 0; i < n; ++i) {
        fgets(buf, sizeof(buf), stdin);
        buf[strcspn(buf, "\n")] = '\0';
        names[i] = strdup(buf);
    }

    qsort(names, n, sizeof(char*), cmp);

    printf("排序後:\n");
    for (int i = 0; i < n; ++i) {
        puts(names[i]);
        free(names[i]);
    }
    free(names);
    return 0;
}

關鍵點

  1. 使用 malloc 動態配置指標陣列與字串記憶體。
  2. qsort 比較函數接收 const void*,需雙重解參考轉為 char*。
  3. 釋放記憶體時先釋放每個字串,再釋放指標陣列。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved