首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言通訊錄系統:鏈表+文件持久化完整實現

     編輯:關於C

系統功能

  • 增刪改查聯繫人(姓名、性別、年齡、電話、地址)
  • 鏈表記憶體管理(頭節點哨兵)
  • 文本文件持久化(啟動載入、操作同步寫入)
  • 文件內修改/刪除特定行(fseek 定位覆寫)

核心資料結構

void write_file(pBook node) {
    static char filename[30] = "";
    FILE *fp;
    if (!node) {  // 清空文件
        fp = fopen(filename, "w");
        fprintf(fp, "已銷毀的通訊錄");
        filename[0] = '\0';
    } else {
        if (!filename[0]) {
            printf("請輸入存儲路徑:");
            scanf("%29s", filename);
            fp = fopen(filename, "w");
            fprintf(fp, "%-10s%-6s%-10s%-8s%-20s\n", "姓名","性別","地址","年齡","號碼");
        } else fp = fopen(filename, "a");
        fprintf(fp, "%-10s%-6s%-10s%-8d%-20s\n",
                node->name, node->sex, node->addr, node->year, node->phone_num);
    }
    fclose(fp);
}

文件修改/刪除特定行

name, node->sex, node->addr, node->year, node->phone_num);
    }
    fclose(fp);
}

主選單流程


工程級改進建議

  • 改用 fgets + sscanf 避免 scanf 緩衝區殘留。
  • 電話號碼用字串存儲,支援前導 0、分隔符。
  • 文件操作加鎖(flock)支援多進程。
  • 引入 SQLite 做持久化,支援索引、事務、併發。
  • 分離 UI、邏輯、資料層,便於單元測試。

總結

這是一個典型的「鏈表 + 文件持久化」教學級專案,涵蓋動態記憶體、指針操作、文件隨機讀寫、選單驅動等核心技能。實戰中建議直接上資料庫,但理解底層機制對排查問題至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved