本文目錄一覽:
- 1、用C語言如何對MySQL資料庫進行操作
- 2、如何用C實現對SQL資料庫的操作?
- 3、找點能看的c語言視頻教程
- 4、C語言網上誰的視頻比較好。
- 5、用C語言怎麼實現與資料庫的連接
- 6、怎樣用C語言編寫一個學生資料庫系統系統
用C語言如何對MySQL資料庫進行操作
有時為了性能,我們會直接用C語言來開發相關的模塊,尤其在我們的web應用中,雖然PHP、JSP等腳本均提供了MySQL的介面,但是顯然直接使用C語言具有更好的安全性和性能,Michael以前用PHP開發的多個項目中就使用了C語言編寫的這類介面,然後再編譯到php裡面,供php腳本直接使用,這方面的話題就不多說了,下面主要說一下在Linux下如何用C語言連接MySQL資料庫,並且讀取裡面的數據返回,同時如何進行編譯。if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯#includewindows.h#endif#includestdio.h#includestdlib.h#includemysql.h我的機器上該文件在/usr/local/include/mysql下定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼defineSELECT_QUERYselectusernamefromtbb_userwhereuserid=%dintmain(intargc,char**argv)char**argv相當於char*argv[]{MYSQL mysql,*sock;定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數MYSQL_RES *res;查詢結果集,結構類型MYSQL_FIELD *fd ;包含欄位信息的結構MYSQL_ROW row ;存放一行查詢結果的字元串數組char qbuf[160];存放查詢sql語句字元串if(argc!=2){//檢查輸入參數fprintf(stderr,usage:mysql_selectuserid\n\n);exit(1);}mysql_init(mysql);if(!(sock=mysql_real_connect(mysql,localhost,dbuser,dbpwd,9tmd_bbs_utf8,0,NULL,0))){fprintf(stderr,Couldn’tconnecttoengine!\n%s\n\n,mysql_error(mysql));perror();exit(1);}sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));if(mysql_query(sock,qbuf)){fprintf(stderr,Queryfailed(%s)\n,mysql_error(sock));exit(1);}if(!(res=mysql_store_result(sock))){fprintf(stderr,Couldn’tgetresultfrom%s\n,mysql_error(sock));exit(1);}printf(numberoffieldsreturned:%d\n,mysql_num_fields(res));while(row=mysql_fetch_row(res)){printf(Theruserid#%d’susernameis:%s\n,atoi(argv[1]),(((row[0]==NULL)(!strlen(row[0])))?NULL:row[0]));puts(queryok!\n);}mysql_free_result(res);mysql_close(sock);exit(0);return0;為了兼容大部分的編譯器加入此行}編譯的時候,使用下面的命令gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令./mysql_select 1將返回如下結果:numberoffieldsreturned:1Theruserid#1’susernameis:Michaelqueryok!上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔源碼天空,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。
如何用C實現對SQL資料庫的操作?
#include stdio.h#include stdlib.h#include string.h#include “util.h”#include sqlca.h“EXEC SQL INCLUDE SQLCA;main(){EXEC SQL BEGIN DECLARE SECTION;char firstname[13];char userid[9];char passwd[19];EXEC SQL END DECLARE SECTION;EXEC SQL CONNECT TO sample;EXEC SQL SELECT FIRSTNME INTO :firstnameFROM employeeWHERE LASTNAME = ‘JOHNSON’;printf( “First name = %s\n”, firstname );EXEC SQL CONNECT RESET;return 0;}上面是一個簡單的靜態嵌入SQL語句的應用程序。它包括了嵌入SQL的主要部分:(1)中的include SQLCA語句定義並描述了SQLCA的結構。SQLCA用於應用程序和資料庫之間的通訊,其中的SQLCODE返回SQL語句執行後的結果狀態。(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之間定義了宿主變數。宿主變數可被SQL語句引用,也可以被C語言語句引用。它用於將程序中的數據通過SQL語句傳給資料庫管理器,或從資料庫管理器接收查詢的結果。在SQL語句中,主變數前均有「:」標誌以示區別。(3)在每次訪問資料庫之前必須做CONNECT操作,以連接到某一個資料庫上。這時,應該保證資料庫實例已經啟動。(4)是一條選擇語句。它將表employee中的LASTNAME為「JOHNSON」的行數據的FIRSTNAME查出,並將它放在firstname變數中。該語句返回一個結果。可以通過游標返回多個結果。當然,也可以包含update、insert和delete語句。(5)最後斷開資料庫的連接。從上例看出,每條嵌入式SQL語句都用EXEC SQL開始,表明它是一條SQL語句。這也是告訴預編譯器在EXEC SQL和「;」之間是嵌入SQL語句。
找點能看的c語言視頻教程
;wh=aigozi
;wh=aigozi
;wh=aigozi
;wh=aigozi
三級網路技術視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟三級網路技術考試的真諦。 ;wh=aigozi
網路安全設備與技術視頻教程 介紹網路安全設備種類及工作原理、優缺點和典型應用。 ;wh=aigozi
項管、數工、網工、監理考友的福音:希賽圖書整體提供 為幫助廣大考友、網友順利通過考試,希賽共組編了近40本輔導用的數字圖書和紙版圖書,積澱了希賽多年的軟考輔導經驗。 ;wh=aigozi
資料庫系統工程師視頻教程 對近幾年的資料庫工程師考試中所有知識點進行了歸類分析和總結,並針對這些重點、難點進行了詳細的講解。 ;wh=aigozi
二級C語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級C考試的真諦。 ;wh=aigozi
提交IT資料,就可獲得數千元人民幣! 希賽下載中心採取與用戶分享的方式,凡是提交資料的,只要有人下載,希賽就給提交者人民幣現金。下載的人越多,提交者就分得越多。一個資料可以獲得上萬的收入,還等什麼呢! ;wh=aigozi
全國計算機等級考試視頻教程 學習完教程後,就可以通過計算機等級考試。學賽網在線測試平台還可以進行在線測試。 ;wh=aigozi
希賽教育瑞星網路安全工程師 本課程是由瑞星公司從事信息安全工作多年的專家、資深工程師及希賽教育高級講師,將其經驗加以總結、提煉,從網路安全的基礎知識到網路安全整體規划進行了詳細剖析,在課程中介紹了大量的網路安全案例,幫助學員在掌握網路安全基礎知識的同時,快速掌握網路安全維護的實際應用技能;同時,本課程還特別介紹了網路安全相關計算機病毒防範和處理,使學員能深入了解計算機病毒知識,並掌握病毒防範和查殺技能。 ;wh=aigozi
Linux伺服器配置及命令講解視頻教程 Linux伺服器配置及命令講解與演示,包括伺服器配置,管理,網路操作,常用命令的講解和實際演示。 ;wh=aigozi
路由器和交換機配置命令講解與演示視頻教程 路由器和交換機配置命令講解與演示,包括交換機配置和命令的講解與演示,路由器的配置和命令的講解與實際演示。 ;wh=aigozi
如何一次通過全國計算機等級考試 希賽教育2008年計算機等級考試網上輔導,考試不及格者,退還所有學費。 ;wh=aigozi
網站規劃建設與管理維護視頻教程 介紹網站建設的全過程,包括準備物理網路,構建Intranet, Internet接入,網站規劃設計與建設,網站管理與維護,網站應用開發等。 ;wh=aigozi
自考資料庫系統原理視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
信息系統項目管理師視頻教程 本教程就考試中經常出現的一些問題進行了歸納和總結,壓縮了所有考試重點和難點知識。所總結的考試重點知識包括了(綜合知識、案例分析、論文)實際考試時除專業英語以外的95%以上的考試知識點,而這些知識點幾乎在每次考試中都會出現。 ;wh=aigozi
軟考視頻教程 根據最新的考試大綱,對考試中所有知識點進行了歸類分析和總結,挖掘出了其中的考試重點和難點,指出了考試的命題方向以及每個知識點在實際考試中所佔的分數比例。 ;wh=aigozi
知識管理視頻教程 使學員能全面了解知識管理的理論和體系,掌握知識管理規劃與實施的方法和技術。 ;wh=aigozi
自考離散數學視頻教程 涉及的主要內容有集合論、圖論、數理邏輯、代數系統、組合數學以及有限狀態自動機理論。 ;wh=aigozi
Microsoft .NET框架程序設計視頻教程 通過對.NET核心技術的講解,幫助學員了解.NET框架如何為眾多高級語言和應用程序模型提供各種服務。 ;wh=aigozi
自考面向對象程序設計(C++版)視頻教程 講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
資料庫系統工程師考試試題分類精解 根據最新的資料庫系統工程師考試大綱,對2004年11月至2007年11月的考試試題進行了分析和總結,對考試大綱規定的內容有重點地進行了細化和深化。 ;wh=aigozi
計算機專業英語視頻教程 由具有豐富教學經驗的教授講解,講解分11個部分,從不同方面精選了53篇英語短文,進行全方位的講解。 ;wh=aigozi
關於加入學賽網高職高專會員的邀請函 希賽顧問團下設有高職高專計算機教學指導委員會,以促進高職高專計算機教學改革,使之培養的人才更加符合企業的實際需求,實現企業和人才之間的無縫集成。免費在學賽網高職高專頻道發布會員單位詳細簡介、推薦2名優秀教師;會員單位的師生參加培訓和購買視頻,可享受超低優惠;為會員單位教師出版學術著作和教材提供資助… ;wh=aigozi
JAVA程序設計視頻教程 以Sun公司的J2SE 1.4.2為標準,詳細介紹了了面向對象編程的基本思想和方法;Java 2語言。 ;wh=aigozi
程序員視頻教程 對考生在備考過程中最易產生疑問的知識點以及考試中常考知識點進行了較深入的探討和總結,並配以例題進行詳細的解說,是備考的得力助手。 ;wh=aigozi
自考計算機原理與體系結構視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好理解、掌握相關知識點。 ;wh=aigozi
二級JAVA語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級Java考試的真諦。 ;wh=aigozi
二級C++語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級C++考試的真諦。 ;wh=aigozi
系統分析師視頻教程 本視頻教程就考試中經常出現的一些問題進行了歸納和總結,壓縮了所有考試重點和難點知識。所總結的考試重點知識包括了(基礎知識、案例分析、論文)實際考試時除專業英語以外的90%以上的考試知識點,而這些知識點幾乎在每次考試中都會出現。 ;wh=aigozi
如何獲得瑞星網路安全工程師 通過瑞星網路安全認證考試的學員(學習課程2個月後,在學賽網遠程測試平台進行測試),可以獲得由瑞星公司頒發的《網路安全工程師》認證。 ;wh=aigozi
自考計算機組裝與維護視頻教程 主要介紹微型計算機組成原理及其組裝與維護技術。 ;wh=aigozi
網路工程師視頻教程 由工作在軟考第一線的專家根據歷年來的考試輔導、閱卷、教材編寫的經驗,總結考生複習中的弱點、難點、疑點編寫而成。 ;wh=aigozi
企業無線網路解決方案集 該專題涵蓋:無線知識,解決方案和成功案例、用戶調查、產品對比、無線網路學術論文、相關下載、廠商名錄等內容。為用戶了解無線網路提供了便利,為企業選擇無線網路方案以及相關產品提供了參考,得到了網友的好評。 ;wh=aigozi
IT項目管理視頻教程 根據PMBOK2004知識體系,結合我國IT項目建設和管理的實際情況,對信息系統項目管理所涉及的知識領域進行了詳細的講解。 ;wh=aigozi
自考C語言程序設計視頻教程 幫助學習者能更好的理解、掌握相關知識點,內容涵蓋了計算機專業《C語言程序設計》課程的所有知識點。 ;wh=aigozi
軟體設計師視頻教程 由全國著名的軟體工程專家張友生與資深軟考輔導專家王勇主編和講解,其最大的特色是採取以「考點為中心,有取有舍」的講課。 ;wh=aigozi
二級Access資料庫視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級Access考試的真諦。 ;wh=aigozi
如何快捷通過計算機自考? 希賽教育2008年計算機專業全國高等教育自考輔導,考試不及格者,退還所有學費! ;wh=aigozi
二級Visual FoxPro語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級Visual FoxPro考試的真諦。 ;wh=aigozi
軟體配置管理視頻教程 學習完本教程,學員將能使用CVS和VSS工具進行軟體版本控制。 ;wh=aigozi
UML建模實踐視頻教程 其涉及的主要內容有UML相關概念的講解、UML的類元、UML的關係介紹、以及UML的九種圖的講解。 ;wh=aigozi
跟蹤最新的IT技術-《IT人員新技術寶典叢書》 希賽為了讓讀者能跟蹤計算機領域各方面的新技術、新知識,確定單位自己的發展方向,特組編了《IT人員新技術寶典叢書》 ;wh=aigozi
自考區域網組網技術視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
網路管理員培訓教程 由工作在軟考第一線的專家根據歷年來的考試輔導、閱卷、教材編寫的經驗,總結考生複習中的弱點、難點、疑點編寫而成。 ;wh=aigozi
免費獲取希賽幣下載希賽視頻方法 通過此方法,可以獲取希賽幣來下載希賽視頻 ;wh=aigozi
未出校園,年收入10萬,好工作趕緊搶! 只要您有能力,就點擊進入。每個省/直轄市只招一個,每個地區/地級市只招1個,每所大學只招1個。要快啊! ;wh=aigozi
計算機專業全國高等教育自學考試視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
數據倉庫與數據挖掘視頻教程 講述了數據倉庫(DW)和數據挖掘(DM)的基本方法,基本原理,重點說明這些方法的主要思想和技術。 ;wh=aigozi
自考網路操作系統安全管理視頻教程 主要介紹了在主流UNIX、Linux和Windows 2000等網路操作系統環境中實現安全管理和系統。 ;wh=aigozi
信息系統監理師視頻教程 由具有豐富的信息系統建設與監理經驗的高級工程師講解,講解的過程中採用理論+實踐經驗+例題解答的方法講授。 ;wh=aigozi
希賽教育加盟策略及體系 希賽IT教育研發中心(以下簡稱為「希賽教育」)是希賽公司屬下的一個專門從事IT教育、教育產品開發、教育書籍編寫的部門,在IT教育方面具有極高的權威性。希賽教育在軟考、IT技術和管理、對日開發、企業培訓、計算機等級考試、計算機自學考試等方面取得了可喜的成績,希賽教育的遠程教育模式得到了國家教育部門的認可和推廣… ;wh=aigozi
二級Visual Basic語言視頻教程 集中了考試所有的難點和重點知識的精深講解,可以保證既不漏掉考試必需的知識點,又不加重考生備考負擔,使考生輕鬆、愉快地掌握知識點並領悟二級Visual Basic考試的真諦。 ;wh=aigozi
IT項目管理(高級篇)視頻教程 以軟體類、管理諮詢類或企業信息化等項目實例分析IT項目涉及的主要項目管理內容。 ;wh=aigozi
軟體開發過程改進視頻教程 通過本課程的學習可以使學員把握CMM的精髓,從而在具體的項目中實施CMM。 ;wh=aigozi
免費贈送計算機等級考試書籍 參加等考輔導、下載資料、購買視頻、參加在線測試可獲贈計算機等級考試書籍一本 ;wh=aigozi
希賽顧問團啟動全國大學生科技創業基金 學賽大學生科技創業基金是希賽顧問團資助型的「天使基金」,也是培育高新科技企業的「種子基金」,為擁有科技成果的高校學生提供成果轉化為產品和服務的平台,進一步落實科教興國的戰略,構建希賽顧問團扶持大學生科技創業的工作體系與服務平台。 ;wh=aigozi
關於加入學賽網培訓超市會員的邀請函 培訓超市是學賽網上一個專業的IT培訓信息發布和搜尋頻道,旨在為全國各地的IT類教育、培訓招生機構和各種類型的學習者提供一個高效、誠信的信息服務平台。為了能讓各培訓機構有更多推廣和宣傳的機會,學賽網根據IT培訓信息的特點,量身定做了不同的特色宣傳專欄,從機構的信譽管理、名師推薦、優秀作品展到學賽網特別推薦的品牌專區,內容豐富、全面,招生機構可以充分展示雄厚的師資力量,讓更多有需求學員放心選擇,而且這一切都是免費的… ;wh=aigozi
品希賽圖書,中電腦大獎,獲三重好禮 2007年12月7日至2008年2月7日期間,凡在希賽「數字出版」頻道中購買在線閱讀者,均有機會中筆記本大獎;按需印刷圖書累計滿400元或一次性購滿200元者,可贈送圖書一冊,任選。 ;wh=aigozi
自考互聯網的應用視頻教程 講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
如何快捷地獲得計算機高級工程師職稱? 希賽教育有5年的軟考輔導經驗,學員通過率在80%以上。命題專家在線答疑,權威的模擬試題,命中率極高。選擇希賽教育,輕輕鬆鬆拿高級職稱。 ;wh=aigozi
自考計算機網路基礎視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
自考數據結構與演算法視頻教程 由具有豐富教學經驗的高級講師講解,講解的過程中採用大量的例題對相關知識點進行講解,幫助學習者能更好的理解、掌握相關知識點。 ;wh=aigozi
C語言網上誰的視頻比較好。
C語言網上的課程是很多的,很推薦去B站找一找學習視頻,章節也分的很詳細;另外就是郝斌的C語言課還是不錯的,不至於講的很枯燥,很通俗易懂,也很適合初學者去學。
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。儘管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標準規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
用C語言怎麼實現與資料庫的連接
#includemysql/mysql.h
#includestdio.h
intmain()
{
MYSQL*conn;
MYSQL_RES*res;
MYSQL_ROWrow;
char*server=”localhost”;//本地連接
char*user=”root”;//
char*password=”525215980″;//mysql密碼
char*database=”student”;//資料庫名
char*query=”select*fromclass”;//需要查詢的語句
intt,r;
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf(“Errorconnectingtodatabase:%s\n”,mysql_error(conn));
}else{
printf(“Connected…\n”);
}
t=mysql_query(conn,query);
if(t)
{
printf(“Errormakingquery:%s\n”,mysql_error(conn));
}else{
printf(“Querymade…\n”);
res=mysql_use_result(conn);
if(res)
{
while((row=mysql_fetch_row(res))!=NULL)
{
//printf(“num=%d\n”,mysql_num_fields(res));//列數
for(t=0;tmysql_num_fields(res);t++)
printf(“%8s”,row[t]);
printf(“\n”);
}
}
mysql_free_result(res);
}
mysql_close(conn);
return0;
}
擴展資料
C語言使用注意事項:
1、指針是c語言的靈魂,一定要靈活的使用它:
(1)、指針的聲明,創建,賦值,銷毀等
(2)、指針的類型轉換,傳參,回調等
2、遞歸調用也會經常用到:
(1)、遞歸遍歷樹結構
(2)、遞歸搜索
怎樣用C語言編寫一個學生資料庫系統系統
這裡有個現成的!拿去改改就行了!!
#includestdio.h
#includestdlib.h
#includestring.h
#include windows.h
#include winbase.h
typedef struct node{ /* 定義鏈表 */
char name[20]; /* 姓名 */
char address[40]; /* 地址 */
char phone[15]; /* 電話 */
long zip; /* 郵編 */
struct node *next;
}add_list;
struct person{ /* 定義一個結構備用 */
char name[20];
char address[50];
char phone[15];
long zip;
};
FILE *fp;
add_list *tail,*head; /* 定義鏈表尾節點指針和頭指針 */
/* 從文件中讀出數據生成通訊錄鏈表,如果文件不存在,生成空鏈表 */
add_list *load(char filename[])
{ add_list *new1,*head;
struct person t;
head=(add_list *)malloc(sizeof(add_list));
tail=head=NULL;
if((fp=fopen(filename,”rb”))==NULL)
return head;
else
if(!feof(fp))
if(fread(t,sizeof(struct person),1,fp)==1)
{ new1=(add_list *)malloc(sizeof(add_list)); /* 連入鏈表第一個節點 */
strcpy(new1-name,t.name);
strcpy(new1-address,t.address);
strcpy(new1-phone,t.phone);
new1-zip=t.zip;
head=tail=new1;
new1-next=NULL;
while(!feof(fp)) /* 連入鏈表其餘節點 */
{ if(fread(t,sizeof(struct person),1,fp)==1)
{ new1=(add_list *)malloc(sizeof(add_list));
strcpy(new1-name,t.name);
strcpy(new1-address,t.address);
strcpy(new1-phone,t.phone);
new1-zip=t.zip;
tail-next=new1;
new1-next=NULL;
tail=new1;
}
}
}
fclose(fp);
return head;
}
/* 自定義函數,進度條 */
void jindutiao(void)
{ int i;
for(i=0;i78;i++) putchar(‘.’);
printf(“\r\a”);
for(i=0;i78;i++)
{
if(i==0) putchar(‘|’);
Sleep(100);
printf(“\b|”);
}
}
/* 插入一條通訊錄記錄 */
void insert(add_list **head)
{ add_list * new1;
new1=(add_list *)malloc(sizeof(add_list));
system(“cls”);
printf(“\n請輸入姓名:”); getchar();gets(new1-name);
printf(“\n請輸入地址:”); scanf(“%s”,new1-address);
printf(“\n請輸入電話:”); scanf(“%s”,new1-phone);
printf(“\n請輸入郵編:”); scanf(“%ld”,new1-zip);
if(*head==NULL) /* 表頭為空時 */
{ *head=new1;
new1-next=NULL;
tail=new1;
}
else /* 插入到表尾 */
{ tail-next=new1;
new1-next=NULL;
tail=new1;
}
printf(“輸入完成,按回車鍵返回……”);
getchar();
getchar();
}
/* 將通訊錄鏈表中的內容保存到指定文件中 */
void save(add_list *head,char filename[])
{ add_list *p;
struct person t;
if((fp=fopen(filename,”wb”))==NULL)
{ printf(“錯誤:不能打開文件%s\n”,filename);
exit(1);
}
else
{ p=head;
while(p!=NULL)
{ strcpy(t.name,p-name);
strcpy(t.address,p-address);
strcpy(t.phone,p-phone);
t.zip=p-zip;
fwrite(t,sizeof(struct person),1,fp);
p=p-next;
}
}
fclose(fp);
printf(“保存成功,按回車鍵返回……”);
getchar();getchar();
}
/* 顯示通訊錄內容 */
void display(add_list *head)
{ add_list *p;
p=head;
if(p!=NULL)
printf(“姓名:\t\t住址:\t\t郵編:\t\t電話:\n”);
while(p!=NULL)
{
printf(“%s\t\t%s\t\t%ld\t\t%s\n”,p-name,p-address,p-zip,p-phone);
p=p-next;
}
printf(“按回車鍵返回……”);
getchar();getchar();
}
/* 按姓名查詢通訊錄記錄 */
int search(add_list *head)
{ add_list *p;
char name[20];
int flag=0;
printf(“請輸入要查找的人的姓名:”);
getchar();
gets(name);
p=head;
while(p!=NULL)
{ if(strcmp(name,p-name)==0)
{ printf(“姓名:\t\t住址:\t\t郵編:\t\t電話:\n”);
printf(“%s\t\t%s\t\t%ld\t\t%s\n”,p-name,p-address,p-zip,p-phone);
flag=1;
}
p=p-next;
}
return flag;
}
/* 按姓名刪除一條通訊錄記錄 */
int delete1(add_list **head)
{ add_list *p,*q,*t;
char name[20],c;
int flag=0;
printf(“請輸入要刪除人的姓名:”);
scanf(“%s”,name);
q=p=*head;
while(p!=NULL)
{ if(strcmp(name,p-name)==0) /* 找到要刪除的人 */
{ printf(“姓名:\t\t住址:\t\t郵編:\t\t電話:\n”);
printf(“%s\t\t%s\t\t%ld\t\t%s\n”,p-name,p-address,p-zip,p-phone);
printf(“真的要刪除嗎?(Y:是,N:否)\n”); /* 徵求意見(刪不刪) */
getchar();c=getchar();
if(c==’y’||c==’Y’) /* 刪除 */
{ if(p==*head)
*head=p-next;
else
q-next=p-next;
t=p;
p=p-next;
free(t);
flag=1;
}
else /* 不刪,跳過 */
{ q=p;
p=p-next;
flag=1;
}
}
else /* 沒找到,繼續 */
{ q=p;
p=p-next;
}
}
return flag;
printf(“按回車鍵返回……”);
getchar();
}
/* 顯示菜單並選擇菜單項 */
int menu_select()
{ char c;
system(“cls”);
printf(“\t\t********************通訊錄********************\n”);
printf(“\t\t\t 1:輸入新的通訊記錄\n”);
printf(“\t\t\t\t 2:刪除記錄\n”);
printf(“\t\t\t\t 3:查找\n”);
printf(“\t\t\t\t 4:保存文件\n”);
printf(“\t\t\t 5:瀏覽所有通訊記錄\n”);
printf(“\t\t\t\t 6:退出\n”);
do{
printf(“請輸入你的選擇(1~~6):”);
c=getchar();
}while(c’1’||c’6′);
return c;
}
/* 主函數 */
int main(void)
{ char filename[20];
char c;
int t;
printf(“\n\n\n\n\n\n\t\t\t\t通訊錄啟動中…\n\n\n\n\n\n\n\n\n\n\n\n\n”);
jindutiao();
system(“cls”);
printf(“請輸入通訊錄文件名稱:\n”);
scanf(“%s”,filename);
getchar();
head=load(filename);
while(1)
{ c=menu_select();
switch(c)
{ case ‘1’: insert(head); break;
case ‘2’: t=delete1(head);
if(!t) printf(“記錯了吧,沒這人!\n按回車鍵返回……”); getchar();getchar(); break;
case ‘3’: t=search(head);
if(!t) printf(“天啊!居然沒找到!\n按回車鍵返回……”);getchar(); break;
case ‘4’: save(head,filename); break;
case ‘5’: display(head); break;
case ‘6’: exit(0);
}
}
}
原創文章,作者:I4BTP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/128341.html