国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

文件操作介紹及C語言實現(xiàn)通訊錄管理系統(tǒng)3.0最終版(文件操作版本)

這篇具有很好參考價值的文章主要介紹了文件操作介紹及C語言實現(xiàn)通訊錄管理系統(tǒng)3.0最終版(文件操作版本)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 前言

上一篇文章我們學(xué)習(xí)了動態(tài)內(nèi)存開辟的相關(guān)知識點,并用動態(tài)內(nèi)存函數(shù)優(yōu)化了我們的通訊錄,但通訊錄還有需要改進(jìn)的地方,比如,正常情況下的通訊錄,應(yīng)該可以一直保存聯(lián)系人信息,而不是退出就清空了,這就需要我們實實在在的保存下來一個通訊錄。
接下來我會給大家介紹文件以及如何用C語言來操作文件。

2. 文件操作

2.1 什么是文件

磁盤上的文件是文件。但是在程序設(shè)計中,我們一般談的文件有兩種:程序文件、數(shù)據(jù)文件
程序文件:包括源程序文件(后綴為.c),目標(biāo)文件(windows環(huán)境后綴為.obj),可執(zhí)行程序(windows環(huán)境后綴為.exe)。
數(shù)據(jù)文件:文件的內(nèi)容不一定是程序,而是程序運(yùn)行時讀寫的數(shù)據(jù),比如程序運(yùn)行需要從中讀取數(shù)據(jù)的文件,或者輸出內(nèi)容的文件。
文件名包含3部分:文件路徑+文件名主干+文件后綴
例如:c:\code\test.txt

本文主要討論的是數(shù)據(jù)文件。
以前我們處理數(shù)據(jù)的輸入輸出都是以終端為對象的,即從終端的鍵盤輸入數(shù)據(jù),運(yùn)行結(jié)果顯示到顯示器上。其實有時候我們會把信息輸出到磁盤上,就比如通訊錄的保存,當(dāng)需要的時候再從磁盤上把數(shù)據(jù)讀取到內(nèi)存中使用,這里處理的就是磁盤上的文件。

2.2 文件緩沖區(qū)

ANSIC 標(biāo)準(zhǔn)采用“緩沖文件系統(tǒng)”處理的數(shù)據(jù)文件的,所謂緩沖文件系統(tǒng)是指系統(tǒng)自動地在內(nèi)存中為程序中每一個正在使用的文件開辟一塊“文件緩沖區(qū)”。
從內(nèi)存向磁盤輸出數(shù)據(jù)會先送到內(nèi)存中的緩沖區(qū),裝滿緩沖區(qū)后才一起送到磁盤上。
如果從磁盤向計算機(jī)讀入數(shù)據(jù),則從磁盤文件中讀取數(shù)據(jù)輸入到內(nèi)存緩沖區(qū)(充滿緩沖區(qū)),然后再從緩沖區(qū)逐個地將數(shù)據(jù)送到程序數(shù)據(jù)區(qū)(程序變量等)。緩沖區(qū)的大小根據(jù)C編譯系統(tǒng)決定的。

2.3 文件指針

緩沖文件系統(tǒng)中,關(guān)鍵的概念是“文件類型指針”,簡稱“文件指針”。
每個被使用的文件都在內(nèi)存中開辟了一個相應(yīng)的文件信息區(qū),用來存放文件的相關(guān)信息(如文件的名字,文件狀態(tài)及文件當(dāng)前的位置等)。
這些信息是保存在一個結(jié)構(gòu)體變量中的。該結(jié)構(gòu)體類型是有系統(tǒng)聲明的,取名FILE
一般都是通過一個FILE的指針來維護(hù)這個FILE結(jié)構(gòu)的變量
FILE* pf;
定義pf是一個指向FILE類型數(shù)據(jù)的指針變量??梢允筽f指向某個文件的文件信息區(qū)(是一個結(jié)構(gòu)體變量)。
通過該文件信息區(qū)中的信息就能夠訪問該文件。也就是說,通過文件指針變量能夠找到與它關(guān)聯(lián)的文件。

2.4 文件的打開與關(guān)閉

文件在讀寫之前應(yīng)該先打開文件,在使用結(jié)束之后應(yīng)該關(guān)閉文件。
打開:
FILE* fopen(const char* filename, const char* mode); mode是打開方式
關(guān)閉:
int fclose(FILE* stream);

文件的打開方式有很多種,這里我給大家一一列舉出來供大家參考使用:

文件使用方式               含義                    如果指定文件不存在
“r”(只讀) 為了輸入數(shù)據(jù),打開一個已經(jīng)存在的文本文件    出錯
“w”(只寫) 為了輸出數(shù)據(jù),打開一個文本文件             建立一個新的文件
“a”(追加) 向文本文件尾添加數(shù)據(jù)                       出錯
“rb”(只讀) 為了輸入數(shù)據(jù),打開一個二進(jìn)制文件          出錯
“wb”(只寫) 為了輸出數(shù)據(jù),打開一個二進(jìn)制文件          建立一個新的文件
“ab”(追加) 向一個二進(jìn)制文件尾添加數(shù)據(jù)                出錯
“r+”(讀寫) 為了讀和寫,打開一個文本文件              出錯
“w+”(讀寫) 為了讀和寫,建議一個新的文件              建立一個新的文件
“a+”(讀寫) 打開一個文件,在文件尾進(jìn)行讀寫            建立一個新的文件
“rb+”(讀寫) 為了讀和寫打開一個二進(jìn)制文件             出錯
“wb+”(讀寫) 為了讀和寫,新建一個新的二進(jìn)制文件       建立一個新的文件
“ab+”(讀寫) 打開一個二進(jìn)制文件,在文件尾進(jìn)行讀和寫   建立一個新的文件

舉例使用:

int main()
{
	//打開文件
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//寫文件
	int ch = 0;
	fputc('w', pf);

	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}


int main()
{
	//打開文件
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//讀文件
	int ch = 0;
	while ((ch = fgetc(pf)) != EOF)
	{
		printf("%c ", ch);
	}
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

2.5 文件的順序讀寫

字符輸入函數(shù) – fgetc – 所有輸入流
字符輸出函數(shù) – fputc – 所有輸出流
文本行輸入函數(shù) – fgets – 所有輸入流
文本行輸出函數(shù) – fputs – 所有輸出流
格式化輸入函數(shù) – fscanf – 所有輸入流
格式化輸出函數(shù) – fprintf – 所有輸出流
二進(jìn)制輸入 – fread – 文件
二進(jìn)制輸出 – fwrite – 文件

3. 優(yōu)化通訊錄

在為大家介紹完文件操作以后,我們就可以來利用文件操作來優(yōu)化我們的通訊錄,使通訊錄在每次退出都可以保存到磁盤上的一個文件里,而且每次重新啟動的時候都會把這個文件再加載進(jìn)通訊錄中,讓我們可以直接打印出所有聯(lián)系人。

3.1 保存通訊錄

利用文件操作來把通訊錄里聯(lián)系人的信息保存在一個txt文件中。

void SaveContact(const contact* pc)
{
	FILE* pf = fopen("contact.dat", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	int i = 0;
	for (i = 0; i < pc->count; i++)
	{
		fprintf(pf, "%s %s %d %s %s", pc->date->name, pc->date->sex, pc->date->age, pc->date->tele, pc->date->address);
	}
	fclose(pf);
	pf = NULL;
}

3.2 加載通訊錄

我們需要每次進(jìn)入程序的時候都自動加載好文件中的聯(lián)系人信息,所以這個函數(shù)可以放在初始化通訊錄函數(shù)的內(nèi)部。

void LoadContact(contact* pc)
{
	FILE* pf = fopen("contact.dat", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	people tmp = {0};
	while (fread(&tmp, sizeof(people), 1, pf))
	{
		CheckCapacity(pc);
		pc->date[pc->count] = tmp;
		pc->count++;
	}
	fclose(pf);
	pf = NULL;
}

這樣我們就可以永久的保存通訊錄里聯(lián)系人的信息在磁盤上,什么時候打開都能直接打印之前保存好的信息。
文件操作介紹及C語言實現(xiàn)通訊錄管理系統(tǒng)3.0最終版(文件操作版本)

4. 結(jié)尾

到本文章為止,使用C語言實現(xiàn)通訊錄管理系統(tǒng)已經(jīng)完成全部優(yōu)化,主要目的是通過這個小程序來學(xué)習(xí)各種知識,并優(yōu)化自己的代碼,思路才是重中之重,非常感謝大家的耐心閱讀,如有問題可以評論區(qū)留言或者私信博主,覺得博主寫的不錯的朋友,可以三連支持一下,感謝各位。文章來源地址http://www.zghlxwxcb.cn/news/detail-403411.html

到了這里,關(guān)于文件操作介紹及C語言實現(xiàn)通訊錄管理系統(tǒng)3.0最終版(文件操作版本)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言進(jìn)階之文件操作及改造通訊錄

    C語言進(jìn)階之文件操作及改造通訊錄

    我們前面學(xué)習(xí)結(jié)構(gòu)體時,寫通訊錄的程序,當(dāng)通訊錄運(yùn)行起來的時候,可以給通訊錄中增加、刪除數(shù)據(jù),此時數(shù)據(jù)是存放在內(nèi)存中,當(dāng)程序退出的時候,通訊錄中的數(shù)據(jù)自然就不存在了,等下次運(yùn)行通訊錄程序的時候,數(shù)據(jù)又得重新錄入,如果使用這樣的通訊錄就很難受。

    2024年02月16日
    瀏覽(26)
  • 使用C語言實現(xiàn)通訊錄管理系統(tǒng)1.0版本(持續(xù)更新)

    使用C語言實現(xiàn)通訊錄管理系統(tǒng)1.0版本(持續(xù)更新)

    本篇文章會教大家用C語言實現(xiàn)一個通訊錄系統(tǒng),此程序?qū)掷m(xù)更新優(yōu)化。覺得博主寫的不錯的朋友可以關(guān)注點贊收藏一波,支持一下博主,感謝大家! 此通訊錄系統(tǒng)可以存儲1000個聯(lián)系人的:姓名,性別,年齡,電話號碼,家庭地址。 主要實現(xiàn)的系統(tǒng)功能有:添加聯(lián)系人,

    2024年02月03日
    瀏覽(49)
  • 數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實現(xiàn)通訊錄管理系統(tǒng)(順序表實現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實現(xiàn)通訊錄管理系統(tǒng)(順序表實現(xiàn))

    這個項目是我大一時期數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,在我潛心研究下出來的,對于當(dāng)時的我來說算是非常滿意啦,哈哈哈哈哈哈哈哈哈哈☆*: .?. o(≧▽≦)o .?.:*☆ 目錄 一、引言 1.目的: 2.意義: 3.主要任務(wù): 4.程序功能: 5.編譯工具: 二、正文 1.系統(tǒng)模塊: 2.算法流程圖: 3.各

    2024年02月02日
    瀏覽(98)
  • 【C語言】實現(xiàn)通訊錄(動態(tài)+文件)

    【C語言】實現(xiàn)通訊錄(動態(tài)+文件)

    在之前三子棋和掃雷的基礎(chǔ)上,本篇文章博主將給大家逐步分析實現(xiàn)通訊錄,介紹通訊錄的每個功能( 動態(tài)增長和文件保存 )。 —————————————————————— test.c - 測試通訊錄 Contact.c - 函數(shù)的實現(xiàn) Contact.h - 函數(shù)和類型的聲明 以多文件的形式分模塊寫的

    2024年02月13日
    瀏覽(78)
  • C語言實現(xiàn)通訊錄(文件版)

    C語言實現(xiàn)通訊錄(文件版)

    學(xué)習(xí)完C語言的文件讀寫,我們又可以將通訊錄增加以下功能: 1.當(dāng)退出通訊錄的時候,把已增加的聯(lián)系人信息寫到文件中。 2.當(dāng)通訊錄初始化的時候,加載(讀取)文件里的信息到通訊錄 ——(直接使用打印函數(shù)可以顯示在屏幕上) 分析: 當(dāng)我們退出通訊錄的時候要實現(xiàn)通訊錄

    2024年02月01日
    瀏覽(21)
  • 【C語言】優(yōu)化通訊錄管理系統(tǒng)

    【C語言】優(yōu)化通訊錄管理系統(tǒng)

    大家好,我是蘇貝,本篇博客帶大家優(yōu)化上一篇的通訊錄,如果你覺得我寫的還不錯的話,可以給我一個贊??嗎,感謝?? 在上一篇博文 實現(xiàn)通訊錄管理系統(tǒng) 的最后,我們了解了那段代碼的問題:通訊錄的大小是固定的100個元素,如果想要存放1000個人的信息,那么空間就

    2024年02月06日
    瀏覽(97)
  • C語言之通訊錄的實現(xiàn)(靜態(tài)版,動態(tài)版,文件版)

    C語言之通訊錄的實現(xiàn)(靜態(tài)版,動態(tài)版,文件版)

    個人主頁(找往期文章包括但不限于本期文章中不懂的知識點):?我要學(xué)編程(?_?)-CSDN博客 目錄 靜態(tài)通訊錄的實現(xiàn)邏輯? test.c:通訊錄的邏輯實現(xiàn) Contact.h:函數(shù)的聲明與頭文件的包含 Contact.c:函數(shù)的實現(xiàn)? 通訊錄源碼:? test.c: Contact.c: Contect.h: 動態(tài)版通訊錄? test.c: Co

    2024年04月13日
    瀏覽(57)
  • 【C語言】優(yōu)化通訊錄管理系統(tǒng)2

    【C語言】優(yōu)化通訊錄管理系統(tǒng)2

    本篇博客是基于上一篇博客寫出來的,了解上一篇博客 大家好,我是蘇貝,本篇博客帶大家再次優(yōu)化上一篇的通訊錄,實現(xiàn)將錄入的數(shù)據(jù)在程序退出后存儲到文件中,在下一次程序開始時打開文件獲取數(shù)據(jù),如果你覺得我寫的還不錯的話,可以給我一個贊??嗎,感謝?? 既

    2024年02月04日
    瀏覽(89)
  • 【C語言】通訊錄管理系統(tǒng)(附圖解、源碼)

    【C語言】通訊錄管理系統(tǒng)(附圖解、源碼)

    目錄 一.前言 二.準(zhǔn)備工作 三.ContactTest.c測試區(qū) 1.菜單 2.選擇功能 四.Contact.h頭文件引用區(qū) 1.通訊錄成員結(jié)構(gòu)體函數(shù)的創(chuàng)建 2.實現(xiàn)功能函數(shù)的創(chuàng)建 五.ContactRealize.c功能實現(xiàn)區(qū) 1.初始化成員信息 2.查找目標(biāo)成員位置 3.增加聯(lián)系人 4.刪除指定聯(lián)系人 5.查找指定聯(lián)系人 6.修改指定聯(lián)系

    2024年02月03日
    瀏覽(97)
  • C語言課程設(shè)計_通訊錄管理系統(tǒng)

    C語言課程設(shè)計_通訊錄管理系統(tǒng)

    以本班同學(xué)的具體數(shù)據(jù)為背景,設(shè)計一個本班同學(xué)通訊錄。 1)? 通訊錄編輯(添加、刪除)。 2)? 按不同的項進(jìn)行查找。 3)? 對已存在的通訊錄按不同的項排序。 4)? 將通訊錄寫入文件 5)從文件讀入通訊錄 備注:通訊錄至少應(yīng)該有以下數(shù)據(jù)項: 姓名,地址,電話,郵編,

    2024年02月06日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包