前言
檔案是當今計算機系統不可或缺的部分,檔案用于存盤程式,檔案,資料,書信,表格,圖形,照片,等其它種類的資訊,作為程式員,必須會撰寫創建檔案和從檔案中讀寫資料,
什么是檔案?
檔案通常是指在磁盤或固態是的一段已經命名的緩沖區,例如我們經常使用的stdio.h就是一個檔案,c語言將檔案看成一段連續的位元組,每個位元組都可被單獨讀書,c提供了兩種模式:文本模式和二進制模式,
一、如何打開檔案和關閉檔案
打開檔案
在c語言中我們一般利用fopen函式來打開檔案,該函式宣告在<stdio.h>庫中,
呼叫該函式的一般形式:
FILE * fp;
fp = fopen(char *str1, "str2");
其中str1指向一個字串,該字串為該檔案的檔案名(即路徑),第二個引數為c語言規定的模式字串,
詳情如下:

這里請注意,如果使用w模式打開一個現有檔案,該檔案的內容會被洗掉,
程式成功打開檔案后,fopen函式回傳檔案指標,其他I/O函式可以使用這個指標指定該檔案,即上述代碼中的fp,FILE是c語言的一種結構體,它的定義在stdio.h庫中,其中包含了緩沖區資訊等,這里不多贅述,
若是我們打開檔案失敗,這里fopen()函式會回傳一個空指標,
關閉檔案
我們在對檔案進行完操作之后,要關閉檔案,防止檔案內容被破壞,在c語言中我們一般用fclose()函式關閉檔案,形式如下:
fclose(fp);
其中fp為檔案指標,必要時會重繪緩沖區,當磁盤已滿,移動硬碟被拔出或者出現I/O錯誤時檔案會關閉失敗,所以對于比較正式的程式我們應該檢查檔案是否關閉,當檔案成功關閉時fclose函式回傳0,否則回傳EOF(這里eof為檔案結尾),
判斷代碼如下:
if (fclose(fp) != 0) {
printf("Error in closing file %s\n", str1);
}
二、檔案的讀寫操作
1.輸入輸出字符
在c語言中我們利用getc()和putc()函式進行檔案里字符的輸入和輸出,語法如下所示:
ch = getc(fp);
putc(ch, fp);
getc函式是讀取檔案中的一個字符賦給ch,
putc函式是將ch寫入檔案中,
2.輸入輸出字串:
在檔案中我們要進行字串的輸入和輸出可以利用fgets函式和fputs函式,語法如下所示:
fgets(buf, stlen, fp);
fgets函式的第一個引數和gets函式相同表示存盤輸入的地址(如上述代碼中的buf是一個char型陣列的名稱),第二個引數是一個整數,表示帶輸入字串的大小,最后一個引數為檔案指標,
fgets函式讀取輸入直到第一個換行符的后面,或者讀到檔案的末尾——EOF,或者讀取到stlen-1個字符,然后fgets函式在末尾添加一個空字符使之成為一個字串,故我們讀取的字串長度為字符數加上一個空字符, 注意,如果fgets函式在讀到字符上限之前已經讀完一行,它為將換行符放到空字符前面,fgets在遇見eof即檔案結尾時會回傳null
fputs(buf, fp)
fputs函式的兩個引數實際意義與fgets相同,它的作用是將字串寫入指定的檔案中,其中由于fgets函式會保留換行符,所以fputs函式不會像puts函式一樣自動添加換行符,
3.格式化輸入與輸出
檔案的格式化輸入與輸出函式為fscanf,fprintf函式其作業方式與scanf,printf類似,
語法如下所示:
fprintf(fp, "%s", str1);
fscanf(fp, "%d", &a);
4.檔案讀寫移動操作
在我們對檔案進行讀取時,經常需要改變讀取的位置,在c語言中有兩個函式可以便于我們進行這種操作,
- ftell函式:
用來取檔案當前位置,其一般形式為:
long n;
n = ftell(fp);
它的回傳值時一個長整型,表示當前的讀寫位置(從檔案開始處到現在的位元組數),呼叫正確回傳當前讀寫位置,錯誤回傳-1L. - fseek函式
fseek函式用來改變檔案指標的當前位置,其一般形式為:
fseek(fp,offset,from);
offset:位移量,型別為long型,表示以from為起點移動的量相對值(位元組數),
from:移動的起始位置,
from是一種模式,如下所示:

總結
文章篇幅較短,只實作了檔案的部分操作,以后會有補充,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279584.html
標籤:其他
上一篇:堆疊的應用——運算式求值
