二、對檔案的操作
2. 檔案的讀寫
2.2 檔案的隨機讀寫
1. 檔案是什麼?
檔案通常是在磁碟或固態硬碟上的一段已命名的儲存區,是指存放在外部儲存介質(可以是磁碟、光碟、磁帶等)上的資料集合。c把檔案看作是一系列連續的位元組,每個位元組都能被單獨讀取。
2. 檔案的操作流程
開啟(建立)檔案–>讀寫檔案–>關閉檔案
3. 如何操作檔案
c語言是通過檔案指標變數的操作來實現對檔案的具體訪問。
對檔案的操作都是通過標準函式來實現的。
1. 檔案的開啟與關閉
1.1開啟檔案
所謂開啟檔案,實際上是建立檔案的各種有關資訊,並使檔案指標指向該檔案,以便進行其他操作。
如果希望接收 fopen() 的返回值,就需要定義乙個file 型別的指標。
舉例:!!!!由以上例子可以看出,在開啟乙個檔案時,通知給編譯系統有三個資訊
需要開啟的檔名。
使用檔案的方式(讀、寫等)
用哪個指標變數指向被開啟的檔案。
1.2 關閉檔案
在程式中,當對乙個檔案的操作使用完畢後,應將其關閉,斷開檔案指標與該檔案之間的聯絡,防止檔案遭到其他操作的破壞。使用 fclose() 函式將指定的檔案關閉,並將file檔案指標的相關資源及所占用的緩衝區歸還給系統。
2. 檔案的讀寫
檔案的讀寫是通過讀寫函式實現的。
根據檔案的讀寫方式不同,檔案可分為檔案的順序讀寫和檔案的隨機讀寫。
位置指標:2.1 檔案的順序讀寫在檔案內部有乙個位置指標,用來指向當前讀寫到的位置,也就是讀寫到第幾個位元組。在檔案開啟時,該指標總是指向檔案的第乙個位元組。
檔案內部的位置指標與c語言中的指標不是一回事。位置指標僅僅是乙個標誌,表示檔案讀寫到的位置,也就是讀寫到第幾個位元組,它不表示位址檔案每讀寫一次,位置指標就會移動一次,它不需要你在程式中定義和賦值,而是由系統自動設定,對使用者是隱藏的。
首先看看所要了解的函式:
單字元讀寫函式:fgetc 和 fputc
字串讀寫函式:fgets 和 fputs
格式化讀寫函式:fscanf 和 fprintf
資料塊讀寫函式:fread 和 fwrite
2.1.1 單字元讀寫函式(fgetc fputc)
字元讀寫函式是以字元(位元組)為單位的讀寫函式,每次可以從檔案讀出或向檔案寫入乙個字元。
字元讀函式fgetc():
字元寫函式fputc():
舉例:
#include
#include
intmain()
ch =
getchar()
;while
(ch !=
'\n'
)// ch = getchar();
// fputc(ch, fp); //字元寫
fclose
(fp)
;//關閉檔案
fp =
fopen
(filename,
"r+");
//開啟檔案 ,允許讀寫
if(fp ==
null
)while
((ch =
fgetc
(fp))!=
eof)
fclose
(fp)
;//關閉檔案
return0;
}
2.1.2 字串讀寫函式(fgets fputs)
讀字串函式fgets() :
寫字串函式 fputs() :
#include
#include
intmain()
gets
(str)
;fputs
(str, fp)
;fclose
(fp)
; fp =
fopen
(filename,
"r+");
if(fp ==
null
)while
(fgets
(str,
10, fp)
!=null
)fclose
(fp)
;
2.1.3格式化字串讀寫函式(fscanf fprintf):
格式化字串讀函式fscanf():
功能:將檔案指標fp所指向的檔案中按照格式字串指定的格式將檔案中的資料送到輸入項位址表中,若讀取資料成功會返回所讀取資料的個數,並將資料按照指定格式存入記憶體中的變數或陣列中,檔案指標自動向下移動;若讀取失敗,返回0。
格式化字串寫函式fprintf():
功能:將輸出項表中的變數值按照格式字串指定的格式輸出到檔案指標fp所指向的檔案位置。
#include
#include
intmain()
scanf
("%s %d"
, name,
&age)
;fprintf
(fp,
"%s %d"
, name, age)
;//寫格式化字串
fclose
(fp)
;//關閉檔案
fp =
fopen
(filename,
"r+");
//開啟檔案 ,允許讀寫
if(fp ==
null
)while((
fscanf
(fp,
"%s %d"
, name,
&age)
!=eof))
fclose
(fp)
;//關閉檔案
}
2.1.4 資料塊讀寫函式(fread fwrite):
資料塊讀函式fread():
資料塊寫函式fwrite():
#include
#include
struct stu
;int
main()
struct stu student[
100]
;int n, i;
scanf
("%d"
,&n)
;for
(i =
0; i < n; i++
)fclose
(fp)
; fp =
fopen
(filename,
"r+");
printf
("\n資料如下\n");
i =0;
while
(fread
(&student[i]
,sizeof
(struct stu),1
, fp)
!=null
)fclose
(fp)
;}
2.2 檔案的隨機讀寫
2.2.1rewind()函式
2.2.2 fseek()函式
2.2.3 ftell()函式
2.2.4 putw函式
2.2.5 getw函式
檔案的建立開啟關閉讀寫
檔案輸入輸出函式 creat open close read write lseek等 對於核心而言,所有開啟的檔案都由檔案描述符標識 檔案描述符是乙個非負整數。讀寫檔案時 先呼叫open或creat函式開啟檔案,成功執行時都將返回乙個檔案描述符。在讀寫時將其作為引數傳遞給read或write.檔案...
開啟關閉檔案和讀寫檔案
一 開啟和關閉檔案 int open char filename,int flags,mode t mode 開啟檔案 open函式將filename轉換為乙個檔案描述符 flags引數也可以是乙個或者更多位掩蓋的 mode引數指定了新檔案的訪問許可權位 int close int fd 關閉檔案 ...
Windows中開啟和關閉FSO檔案讀寫許可權的方法
windows98系統 在dos命令列狀態輸入以下命令 關閉命令 regsvr32 u c windows system scrrun.dll 開啟命令 regsvr32 c windows system scrrun.dll win2000系統 在cmd命令列狀態輸入以下命令 關閉命令 regsv...