文件的操做—c program

    前幾天由於工做的緣故學習了下c語言對文件操做的一些經常使用函數,主要涉及到的函數有fopen,fseek,fwrite,fread,fclose和feof,下面我打算具體陳述下我對這幾個函數用法的理解。函數

    fopen函數
    做用:打開一個文件,成功返回指向該流的文件指針,失敗返回NULL    
    原型:FILE *fopen(const char *path, const char *mode);  其中path是文件的路徑(絕對路徑);mode是流形態;經常使用的流形態有  r(以只讀的方式打開,且文件必須存在),rb+(讀寫打開一個二進制文件),w(以只寫的方式打開文件,若文件存在則清零從新寫入,不存在則創建),a(以追加只寫的方式打開文件,若文件存在則寫入的數據加在原來的尾部,沒有則創建)等。學習

    fseek函數
    做用:從新定位流(數據流/文件)內部的文件指針,函數執行成功返回0,失敗返回-1
    原型:int fseek(FILE *pfile, long offset, int fromwhere);其中fromwhere設定從哪一個位置開始偏移(一般取值有三種 SEEK_SET:文件開頭;SEEK_CUR:當前位置;SEEK_END:文件結尾);offset即偏移量。spa

    fwrite和fread函數
    做用:向文件 寫/讀 數據塊,成功返回實際寫入數據項個數(或讀出的數據項個數)
    原型:size_t fwrite (const void *buf, size_t  size, size_t count, FILE *pfile);
             size_t fread (const void *buf,  size_t size,  size_t count, FILE *pfile);其中size的單位是字節,count爲須要寫/讀size大小的次數;buf是準備輸入的數據塊的地址(或存儲讀出來數據塊的地址)。指針

    fprintf函數
    做用:將格式化的數據寫入文件,執行成功返回寫入的字符數,失敗則返回一個負數(此函數和fwrite相似,可是區別仍是很大,有待進一步研究,還要注意和sprintf的區別)
    原型:int fprintf(FILE *pfile, const char *format, [argument]);  參數的具體用法見文章後面給出的實例更有利於理解。code

    feof函數就是判斷是否到了文件的末尾,原型int feof (FILE * pfile);遇到文件結束則返回非0值,不然返回0;fclose就是關閉文件,原型爲int fclose (FILE *pfile);關閉成功返回0,不然返回非0;orm

結合上面的介紹,我寫了一段代碼,涵蓋了上面大部分函數:
原型

void file_oper()
{
	FILE * pfile = NULL;
	char *str_write = "hangzhou\n";
	char str_read[] = "";
	
	int count = 1;
	int year = 2012;
	
	pfile = fopen("test.txt", "w+");
	if(NULL == pfile)
	{
		printf("open file failure!\n");
		return;
	}
	
	fwrite(str_write, strlen(str_write), count, pfile);
	fprintf(pfile, "huawei %d", year);
	fseek(pfile, 0, SEEK_SET);
	fread(str_read, 8, 1, pfile);
	str_read[8] = '\0';
	printf("%s\n", str_read);
	
	if(NULL != pfile)
	{
		fclose(pfile);
	}
}

代碼的執行結果:
it

hangzhou
form

在工程文件夾下建立了文件test.txt,文件裏面的內容以下:

class

相關文章
相關標籤/搜索