C 語言初學教材 - 第六章 登出或離開

我們在函數 frienddata() 中,直接離開程式的方法為呼叫標準函數庫 stdlib.h exit() ,這個函數可使程式正常結束,需要一個整數當參數,我們這裡代入整數 1 。



登出的方式則是利用狀態變數,若 STATE 被設定成 EXIT ,就會跳出 while (1) 迴圈,因而結束 frienddata() 回到 login() ,重新進行 login() 中的 while (1) 迴圈。


完整的標頭檔及實作檔,請參考


繼續測試,假設通訊錄中已經有這些資料



輸入 3 ,查詢好友



嗯,有 mary 的資料



再來排序一下



印出列表



選擇 6 ,存檔後登出



重新登入一次



重新印出列表



咦?剛剛建立的資料都不見了,這是為什麼呢?因為那些資料存取的入口為 startPtr ,而 startPtr 屬於 frienddata() 的區域變數,當我們回到 login() 重新登入後,便無法再利用之前建立的區域變數囉!


我們不是用存檔後登出嗎?但是還沒實際建立存檔機制唄!下一個部份我們將介紹標準函數庫中有關存檔的功能。


問題與討論
  1. 有沒有方法在離開函數後,下一次進入函數仍能利用原先區域變數的值?
  2. 登出機制中,需不需要加入清空鏈結串列的機制,也就是呼叫 free() 釋放每個節點的空間?




沒有留言: