練習 C:構建一個簡單的電話簿應用程序
學習C語言編程的最佳途徑之一就是動手實踐。本文將帶您逐步完成一個我最近完成的項目:一個簡單的電話簿應用程序。此應用演示了C語言中的文件處理和基本數據管理,允許您添加、查看和刪除聯繫人。
代碼詳解
以下是完整代碼:
<code class="c">#include <stdio.h> #include <string.h> // 函数声明void addcontact(char name[], char number[]); void viewcontacts(); void deletecontact(char name[]); int main() { int choice; char name[20]; char number[20]; printf("-- 欢迎使用您的电话簿! -- \n"); do { // 显示菜单printf("\n您想执行什么操作?\n"); printf("1. 创建新联系人\t 2. 查看电话簿\t 3. 删除联系人\t 4. 退出\n"); scanf("%d", &choice); switch (choice) { case 1: // 添加新联系人printf("很好,让我们创建一个新联系人:\n"); printf("请输入联系人的姓名:\n"); scanf("%s", name); printf("现在输入电话号码:\n"); scanf("%s", number); addcontact(name, number); break; case 2: // 查看电话簿printf("这是您的电话簿:\n"); viewcontacts(); break; case 3: // 删除联系人printf("请输入要删除的联系人的姓名:\n"); scanf("%s", name); deletecontact(name); break; } } while (choice != 4); // 循环直到用户选择“退出” return 0; } // 向电话簿添加联系人的函数void addcontact(char name[], char number[]) { FILE *pfile; pfile = fopen("phonebook.txt", "a"); if (pfile == NULL) { printf("打开电话簿失败。"); return; } fprintf(pfile, "姓名: %s \t 电话: %s\n", name, number); printf("联系人已创建!\n"); fclose(pfile); } // 查看电话簿中所有联系人的函数void viewcontacts() { char filecontent[200]; FILE *pfile; pfile = fopen("phonebook.txt", "r"); while (fgets(filecontent, sizeof(filecontent), pfile)) { printf("\n%s", filecontent); } fclose(pfile); } // 从电话簿中删除联系人的函数void deletecontact(char name[]) { FILE *pfile, *ptrash; char line[200], contactname[20], contactnumber[20]; pfile = fopen("phonebook.txt", "r"); ptrash = fopen("trash.txt", "w"); if (pfile == NULL || ptrash == NULL) { printf("打开文件失败。"); return; } while (fgets(line, sizeof(line), pfile)) { sscanf(line, "姓名: %s \t 电话: %s\n", contactname, contactnumber); if (strcmp(name, contactname) != 0) { fputs(line, ptrash); } } fclose(pfile); fclose(ptrash); // 将旧电话簿替换为更新后的版本remove("phonebook.txt"); rename("trash.txt", "phonebook.txt"); printf("联系人已删除。"); }</string.h></stdio.h></code>
項目特點
該程序實現了三個核心功能:
-
添加聯繫人:
- 允許用戶輸入姓名和電話號碼。
- 將聯繫人信息存儲到名為
phonebook.txt
的文件中。
-
查看聯繫人:
- 讀取並顯示
phonebook.txt
文件中存儲的所有聯繫人信息。
- 讀取並顯示
-
刪除聯繫人:
- 根據用戶輸入的姓名刪除聯繫人。
- 通過創建臨時文件過濾掉已刪除的聯繫人,然後替換原始文件。
學習收穫
通過這個練習,我鞏固了以下C語言知識:
-
文件處理:熟練運用
fopen
、fclose
等文件操作函數,並處理文件打開失敗的情況。 -
字符串操作:使用
strcmp
和sscanf
等函數進行字符串比較和解析。 - 基本數據管理:學習如何在簡單的文本文件中存儲和管理數據,以及通過創建臨時文件來更新文件內容。
代碼測試
- 將代碼複製到
.c
文件中(例如phonebook.c
),並使用C編譯器(如GCC)編譯:
<code class="bash">gcc -o phonebook phonebook.c</code>
- 運行編譯後的程序:
<code class="bash">./phonebook</code>
- 按照屏幕提示添加、查看或刪除聯繫人。
- 打開
phonebook.txt
文件驗證數據是否正確存儲。
未來改進
這個程序是一個良好的開端,未來可以考慮以下改進:
- 輸入驗證:驗證電話號碼的有效性(例如,只包含數字),防止重複姓名。
-
用戶界面改進:提供更清晰的提示信息,允許輸入包含多個單詞的姓名(使用
fgets
代替scanf
)。 - 增強文件處理:考慮數據加密以提高安全性,使用更結構化的文件格式(如CSV 或JSON)。
- 高級功能:添加搜索功能,按字母順序排序聯繫人。
總結
這個練習幫助我深入理解了C語言的文件處理和基本數據管理。這是一個簡單但實用的程序,可以作為更複雜項目的基礎。如果您是C語言初學者,強烈推薦您嘗試一下!這是一個有趣且有益的學習過程。
以上是練習 C:構建一個簡單的電話簿應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

2025年全球十大加密貨幣交易所包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi、Bitfinex、KuCoin、Bittrex和Poloniex,均以高交易量和安全性著稱。

全球十大加密貨幣交易平台包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi Global、Bitfinex、Bittrex、KuCoin和Poloniex,均提供多種交易方式和強大的安全措施。

芝麻開門是重點加密貨幣交易的平台,用戶可以通過官方網站或社交媒體獲取入口,確保訪問時驗證SSL證書和網站內容的真實性。

Binance、OKX、gate.io等十大數字貨幣交易所完善系統、高效多元化交易和嚴密安全措施嚴重推崇。

目前排名前十的虛擬幣交易所:1.幣安,2. OKX,3. Gate.io,4。幣庫,5。海妖,6。火幣全球站,7.拜比特,8.庫幣,9.比特幣,10。比特戳。

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。
