C語言文件操做 (一)

來源:C語言文件操做 (freecplus.net)html

C 語言對文件進行操做以前必須先「打開」文件,操做(讀和寫)完成後,再「關閉」文件。linux

打開文件 --> 操做文件(文件讀寫)--> 關閉文件windows

一、文件操做函數

操做文件的時候,C語言爲文件分配一個信息區,該信息區包含文件描述信息,緩衝區位置、緩衝區大小、文件讀寫到的位置等基本信息,這些信息用一個結構體來存放(struct_IO_FILE),這個結構體有一個別名FILE(typedef struct_IO_FILE FILE), FILE結構體和對文件操做的庫函數在stdio.h頭文件中聲明。學習

typedef struct
{
    short level;            // 緩衝區「滿」或「空」的程度
    unsigned flags;         // 文件狀態標誌
    char fd;                // 文件描述符
    unsigned char hold;     // 如緩衝區無內容不讀取字符
    short bsize;            // 緩衝區的大小
    unsigned char *buffer;  // 數據緩衝區的位置
    unsigned ar *curp;      // 指針當前的指向
    unsigned istemp;        // 臨時文件指示器
    short token;            // 用於有效性檢查
}FILE;

1.1 打開文件的函數.net

fopen函數中會動態分配一個FILE結構體大小的內存空間,並把FILE結構體內存的地址做爲函數的返回值,程序中用FILE結構體指針存放這個地址。3d

fopen來建立一個新的文件或者打開一個已存的文件,調用fopen函數成功後,返回一個文件指針( FILE *),函數的原型以下:指針

FILE *fopen( const char * filename, const char * mode );

參數filename 是字符串,表示須要打開的文件名,能夠包含目錄名,若是不包含路徑就表示程序運行的當前目錄。實際開發中,採用文件的全路徑。htm

參數mode也是字符串,表示打開文件的方式(模式)。blog

返回值:打開成功,返回該文件對應的 FILE 類型的指針;打開失敗,返回 NULL。故需定義 FILE 類型的指針變量,保存該函數的返回值。可根據該函數的返回值判斷文件打開是否成功。

方式

含 義

說 明

r

只讀

文件必須存在,不然打開失敗。

w

只寫

若是文件存在,則清除原文件內容;若是文件不存在,則新建文件。

a

追加只寫

若是文件存在,則打開文件,若是文件不存在,則新建文件。

r+

讀寫

文件必須存在。在只讀 r 的基礎上加 '+' 表示增長可寫的功能。

w+

讀寫

在只寫w的方式上增長可讀的功能。

a+

讀寫

在追加只寫a的方式上增長可讀的功能。

 

 

1.2 關閉文件的函數

fclose函數除了關閉文件,還會釋放FILE結構體佔用的內存空間。

函數的原型:

int fclose(FILE *fp);

fp爲fopen函數返回的文件指針。

/*
 * 程序名:12-02.c,此程序用於文件打開和關閉簡單操做 
*/
#include <stdio.h>
int main(){
	FILE *fp = 0; //定義存放文件指針的變量 
	fp = fopen("D:\\學習\\111.txt", "r"); 
	if ( fp == 0 )
	{
		printf("打開D:\學習\111.txt失敗;\n");
		return -1;
	}
	printf("D:\學習\111.txt fp =%p \n", fp);//%p是打印地址的,打印文件的地址
	fclose(fp) ;
}

 

在windows 裏面寫路徑時候用用兩個反斜槓"//"或者正斜槓「/」來表示路徑,主要不能使用一個反斜槓"\"

windows是兩個反斜槓「\\」,也能夠使用正斜槓「/」

linux 用正斜槓「/」

注意事情:

1)調用fopen打開文件的時候,必定要判斷返回值,若是文件不存在、或沒有權限、或磁盤空間滿了,都有可能形成打開文件失敗。

2)文件指針是調用fopen的時候,系統動態分配了內存空間,函數返回或程序退出以前,必須用fclose關閉文件指針,釋放內存,不然後果嚴重。

3)若是文件指針是空指針或野指針,用fclose關閉它至關於操做空指針或野指針,後果嚴重。

相關文章
相關標籤/搜索