久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

學習筆記1:C語言文件操作(一)-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司服務項目包括福安網(wǎng)站建設、福安網(wǎng)站制作、福安網(wǎng)頁制作以及福安網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,福安網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到福安省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

一. 文件介紹

1.文件的分類

2.關于數(shù)據(jù)文件

3.文件名

二.引言

三. C程序中文件的打開和關閉

1.文件信息區(qū)

2.文件打開和關閉函數(shù)

3.實現(xiàn)文件的打開與關閉

四.文件的順序讀寫

1.文件讀取示例:

2.文件的寫入示例:


一. 文件介紹 1.文件的分類

2.關于數(shù)據(jù)文件

數(shù)據(jù)文件的內(nèi)容不是程序,而是程序運行時讀寫的數(shù)據(jù),比如程序運行需要從中讀取數(shù)據(jù),或者輸出內(nèi)容到其中.

3.文件名

一個文件要有唯一的文件標識(為了方便,我們就將文件標識稱為文件名),以便用戶識別和引用。

文件名包含3個部分 :文件路徑+文件名主干+文件后綴

二.引言

學習文件操作之前,我們所編寫的程序都是在與計算機的動態(tài)內(nèi)存(比如鍵盤輸入緩存區(qū),輸出終端等)進行數(shù)據(jù)交換,程序本身的運行也是在動態(tài)內(nèi)存中進行的,所以程序關閉后,所有的數(shù)據(jù)都會被清理。若想要讓程序所處理的數(shù)據(jù)得到保存并可以在下次運行程序時直接將相關數(shù)據(jù)導入到程序中,我們就必須讓程序?qū)崿F(xiàn)文件操作,通過文件操作,程序便可以和計算機硬盤中的數(shù)據(jù)文件進行數(shù)據(jù)交換,存儲在硬盤數(shù)據(jù)文件中的數(shù)據(jù)可以持久地保存并隨時可以被取用。?

輸入輸出流是抽象的概念,是開發(fā)人員為了編程人員使用方便統(tǒng)一封裝起來的過程,其具體的實現(xiàn)細節(jié)無須我們關心。?

C語言程序,只要運行起來,就默認打開了三個流:

stdin--標準輸入流--鍵盤

stdout--標準輸出流--屏幕

stderr--標準錯誤流--用于輸出警告信息

三. C程序中文件的打開和關閉 1.文件信息區(qū)

每個被使用的文件都在內(nèi)存中開辟了一個相應的文件信息區(qū),用來存放文件的相關信息(如文件的名字,文件狀態(tài)及文件當前的位置等)。這些信息是保存在一個結(jié)構體變量中的。該結(jié)構體類型是有系統(tǒng)聲明的,取名FILE。

在VS2013編譯環(huán)境中該類結(jié)構體定義如下:

struct _iobuf{
? ? ? ? ? ? ? ? char *_ptr;
? ? ? ? ? ? ? ? int? ? ? _cnt;
? ? ? ? ? ? ? ? char *_base;
? ? ? ? ? ? ? ? int? ? ? _flag;
? ? ? ? ? ? ? ? int? ? ? _file;
? ? ? ? ? ? ? ? int? ? ? _charbuf;
? ? ? ? ? ? ? ? int? ? ? _bufsize
? ? ? ? ? ? ? ? char *_tmpfname;
? ? ? ? ? ? ? ? };
typedef struct _iobuf FILE;

不同的編譯器FILE類型的包含的內(nèi)容不完全相同,但是大同小異。?

C程序調(diào)用文件打開函數(shù)時,系統(tǒng)會根據(jù)文件的情況自動在內(nèi)存中創(chuàng)建用于存儲該文件各類信息的FILE結(jié)構體變量,這種結(jié)構體變量就是文件信息區(qū)。創(chuàng)建的過程函數(shù)調(diào)用者無須關心。

通過文件信息區(qū)中的信息就能訪問該文件(訪問操作也是通過調(diào)用庫函數(shù)實現(xiàn),因此具體細節(jié)也無須使用者關心)。

2.文件打開和關閉函數(shù)

文件在讀寫之前應該先打開文件,在使用結(jié)束之后應該關閉文件。

文件的打開和關閉都是通過調(diào)用庫函數(shù)實現(xiàn)的。

文件打開函數(shù):? ?FILE? * fopen (const char * filename , const char * mode);

FILE * 是指向文件信息區(qū)的結(jié)構體指針變量;

const char*filename 用于接收完整的文件名(字符串常量的首地址)

const char*mode? ? ? 用于接收文件打開方式(也是用字符串常量表示):

常用打開方式 說明

"r"

以“只讀”方式打開文件。只允許讀取,不允許寫入。文件必須存在,否則打開失敗。
"w"以“寫入”方式打開文件。如果文件不存在,那么創(chuàng)建一個新文件;如果文件存在,那么清空文件內(nèi)容(相當于刪除原文件,再創(chuàng)建一個新文件)。
"a"以“追加”方式打開文件。如果文件不存在,那么創(chuàng)建一個新文件;如果文件存在,那么將寫入的數(shù)據(jù)追加到文件的末尾(文件原有的內(nèi)容保留)。
"r+"以“讀寫”方式打開文件。既可以讀取也可以寫入,也就是隨意更新文件。文件必須存在,否則打開失敗。
"w+"以“寫入/更新”方式打開文件,相當于wr+疊加的效果。既可以讀取也可以寫入,也就是隨意更新文件。如果文件不存在,那么創(chuàng)建一個新文件;如果文件存在,那么清空文件內(nèi)容(相當于刪除原文件,再創(chuàng)建一個新文件)。
"a+"以“追加/更新”方式打開文件,相當于a和r+疊加的效果。既可以讀取也可以寫入,也就是隨意更新文件。如果文件不存在,那么創(chuàng)建一個新文件;如果文件存在,那么將寫入的數(shù)據(jù)追加到文件的末尾(文件原有的內(nèi)容保留)。

文件關閉函數(shù) : int fclose (FILE*stream);

FILE* stream 用于接收指向所要關閉文件的結(jié)構體指針變量

文件打開函數(shù)調(diào)用者需用一個FILE*指針來維護系統(tǒng)所創(chuàng)建的FILE結(jié)構的變量。

因此需要創(chuàng)建一個FILE*指針變量來接收fopen函數(shù)返回的FILE*指針

3.實現(xiàn)文件的打開與關閉
示例:(文件名根據(jù)實際情況來寫)
#includeint main ()
{
    FILE* ptr =NULL;
    if((ptr=fopen("C:\\code\\text.txt","r"))==NULL)
    {
        perror("fopen");
        exit(0);
    }
    
    fclose(ptr);                
    ptr=NULL;                 //文件關閉后,F(xiàn)ILE結(jié)構體銷毀,指針要置空                               
    return 0;
}

注意將文件名傳入fopen時文件名中的 \ 用另一個\來修飾不然會被解讀為轉(zhuǎn)義字符

perror是一個錯誤警告函數(shù),在這里用于檢驗文件打開是否成功

文件會占用系統(tǒng)資源,所以打開后要記得關閉。?

四.文件的順序讀寫

文件中的數(shù)據(jù)一般是以字符的方式存儲的

1.文件讀取示例:

fgets函數(shù)--->按行讀取文件:

Get a string from a stream.

char * fgets( char *string, intn, FILE *stream);

該函數(shù)的功能是按行讀取文件,每調(diào)用一次會讀取文件中一行的數(shù)據(jù),第一次調(diào)用讀第一行,第二次調(diào)用讀第二行(以此類推)。

將FILE*所操作的文件中n個字節(jié)的內(nèi)容讀取到程序中的字符數(shù)組string中。

char *string 用于接收字符數(shù)組首元素地址,n表示讀取的字節(jié)數(shù)

#includeint main()
{
	FILE* ptrf = NULL;
	char arr[40] = { 0 };                  用于接收從文件中讀取的內(nèi)容

	if ((ptrf = fopen("D:\\Program Files (x86)\\作業(yè)文檔\\行者視覺組第五次培訓\\行者視覺組第五次培訓\\2.txt", "r")) == NULL)
	{
		perror("fopen");
		return 1;
	}

	int i = 0;
	for (i = 0; i< 6; i++)
	{
		fgets(arr, 40, ptrf);              讀取文件中6行的內(nèi)容,每讀一次打印一次
		printf("%s\n", arr);
	}                                      注意本例中每一次讀取都會覆蓋arr中原有的內(nèi)容

	fclose(ptrf);
	ptrf = NULL;
	return 0;
}

注意文件打開方式用"r".?

2.文件的寫入示例:

fputs函數(shù):

Write a string to a stream.

int fputs( const char *string, FILE *stream);

函數(shù)的功能是將 const char *string 所指向的字符串寫入到FILE*stream所操作的文件中

#includeint main()
{
	FILE* ptrf = NULL;
	char arr[40] = { 0 };                  

	if ((ptrf = fopen("D:\\Program Files (x86)\\作業(yè)文檔\\行者視覺組第五次培訓\\行者視覺組第五次培訓\\2.txt", "w")) == NULL)
	{
		perror("fopen");
		return 1;
	}

	int i = 0;
	for (i = 0; i< 6; i++)
	{
        scanf("%s",arr);
		fputs(arr,ptrf);
        fputs("\n",ptrf);              		
	}                                      
    printf("文件寫入成功\n");
	fclose(ptrf);
	ptrf = NULL;
	return 0;
}

注意文件打開方式用 "w"

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享名稱:學習筆記1:C語言文件操作(一)-創(chuàng)新互聯(lián)
當前鏈接:http://sd-ha.com/article32/dceesc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊靜態(tài)網(wǎng)站、微信公眾號電子商務、外貿(mào)網(wǎng)站建設標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化