C語言文件操作

文件:磁盤上的文件是文件。

在程序設計中,我們一般談的文件有兩種:程序文件、數據文件

1.程序文件:
包括源程序文件(後綴爲.c),目標文件(windows環境後綴爲.obj),可執行程序(windows環境後綴 爲.exe)。

2.數據文件
文件的內容不一定是程序,而是程序運行時讀寫的數據,比如程序運行需要從中讀取數據的文件,或者輸出內容的文件。

我們主要講的是數據文件,根據數據的組織形式,數據文件被稱爲文本文件或者二進制文件。
數據在內存中以二進制的形式存儲,如果不加轉換的輸出到外存,就是二進制文件。
如果要求在外存上以ASCII碼的形式存儲,則需要在存儲前轉換。以ASCII字符的形式存儲的文件就是文本文件。

文件緩衝區:
ANSIC 標準採用“緩衝文件系統”處理的數據文件的,所謂緩衝文件系統是指系統自動地在內存中爲程序中每一個正在 使用的文件開闢一塊“文件緩衝區”。從內存向磁盤輸出數據會先送到內存中的緩衝區,裝滿緩衝區後才一起送到磁盤 上。如果從磁盤向計算機讀入數據,則從磁盤文件中讀取數據輸入到內存緩衝區(充滿緩衝區),然後再從緩衝區逐 個地將數據送到程序數據區(程序變量等)。緩衝區的大小根據C編譯系統決定的(看不懂看下面)
這就相當於你嗑瓜子,垃圾桶離你很遠的時候,你難道要吃一個跑過去扔一個嗎?那麼我們就是嗑一把瓜子後,把瓜子皮一次送往垃圾桶,而文件緩衝區就相當於你聚瓜子皮的地方,我們把東西先寫好放在內存中,等到不用了,內存一次寫到硬盤中。

在c程序中我們讀寫文件時,都需要文件指針,一般都在stdio.h中聲明瞭;

FILE* pf;//文件指針變量

定義pf是一個指向FILE類型數據的指針變量。可以使pf指向某個文件的文件信息區(是一個結構體變量)。通過該文 件信息區中的信息就能夠訪問該文件。也就是說,通過文件指針變量能夠找到與它關聯的文件。

文件的打開與關閉

FILE * fopen ( const char * filename, const char * mode ); 
int fclose ( FILE * stream );

一般用上面的兩個函數打開和關閉文件,我們打開文件後一定要記得關閉,不然造成文件資源泄露,類似於內存泄露。
舉個例子:

FILE* fp=fopen("e:/text.txt","r");

這就是以只讀的方式打開E盤的text.txt的文件。
方式我們常用紅框內的方式。

fclose(fp);

這就把剛纔打開的文件關閉了。

函數這是我們一般用的對文件讀寫的函數。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
	FILE *fp = fopen("e:/test.txt","r");
	char a[20];
	if (fp == NULL){
		printf("錯誤\n");
	}
	else{
		fread(a,1,sizeof(a),fp);
		char *p = a;
		printf("%s\n", p);
		fclose(fp);
	}
	system("pause");
	return 0;
}

上面就是讀操作;

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

fread:void *ptr是你要寫入內存地址,第二個是無符號整型,說元素字節大小,第三個是用來表示多少個元素,最後那個就是你命名的文件指針,返回值爲成功寫入的數值;

fwrite類似於fread,寫入的爲常量。

int fputs ( const char * str, FILE * stream );
char * fgets ( char * str, int num, FILE * stream );

類似於上面,只不過不用說明大小了,自動讀取限制。

還有重要的是

我們一個程序打開的文件的數量是有上限的,這個上限因電腦而異,同時,當我們運行一個c程序的時候,電腦會默認打開三個文件:

stdin標準輸入 =》 鍵盤

stdout標準輸出 =》 顯示器

stdrro標準錯誤 =》 顯示器

這三個文件,當程序運行打開,程序停止,三個文件自動關閉,當然這三個文件我們是可以提前用fclose()提前關閉的。

發佈了42 篇原創文章 · 獲贊 12 · 訪問量 3361
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章