“文件”是指存儲在計算機外部存儲器中的數據的集合。計
算機根據?文件的名字,完成對?文件的操作
C語?言將?文件看作是字符構成的序列,即字符流。其基本 的存儲單位是字節。
?文件的讀寫操作函數,它們都在頭?文 件stdio.h定義的:
? 按字符讀寫的函數fgetc()、fputc()
? 按字符串讀寫的函數fgets()、fputs()
? 按格式要求讀寫的函數fprintf()、fscanf()
? 按數據塊讀寫的函數fread()、fwrite()
文件指針變量=fopen(?件名,處理文件方式);
文件不存在等原因造成不能打開? 件,則調?fopen()後將返回一個空指針 NULL。
fputc(字符,?文件型指針變量)
? fp為一個文件類型指針變量,上式將字符常 量’A’(也可以是字符型變量)寫?文件當前位 置,並且使?件位置指針下移一個字節。如果 寫入操作成功,返回值是該字符,否則返回 EOF。
fgetc()函數
fgetc(?件型指針變量)
返回文件當前位置的字符,並且使?件位置指針下移一個字符。如果遇到文件結束, 則返回值為文件結束標志EOF。
fputs(字符串,?件型指針變量)
寫?文件成功,函數 返回值為0,否則為EOF。
fgets(字符數組,字符數,?件型指針變量)
其作?是從fp指向的?件的當前位置開始讀取 n-1個字符,並加上字符串結束標志’\0’一起放入字符數組str中。如果從文件讀取字符時遇 到換行符或文件結束標志EOF,讀取結束。 函數返回值為字符數組str的?地址。
fprintf(文件型指針變量, 格式控制, 輸出表列)
它的作?是將變量num、name、score按照%ld、 %s、%5.1f的格式寫?入fp指向的文件的當前位置
fscanf(?件型指針變量, 格式控制,輸入表列);
它的作?是從fp指向的文件的當前位置開始,按
照%ld、%s、%5.1f的格式取出數據,賦給變量
num、name和score。
按數據塊讀寫的函數fread()、fwrite()
fwrite(寫?文件的數據塊的存放地址,一個數據塊的字節數,數據塊的個數,?件型指針變量);
例如:已知struct student 類型的數組stu[20],則fwrite(&stu[1], sizeof(struct student ), 2, fp);
如果成功返回寫入的數據塊的數量 2
fread()函數
函數fread()的作?用是從?件中讀出成批的數據塊
fread(從文件讀取的數據塊的存放地址,?個數據塊的字節數,數據塊的個數,文件型指針變量);
已知stu1是?一個結構體struct student變量,則
fread(&stu1, sizeof(struct student ), 1, fp);
? 從?件類型指針fp指向的文件的當前位置開始,讀取1個數據塊,該數據塊為結構體struct student類型變量所占字節數,然後將讀取的內容放入變量stu1中。
? 注意:fwrite()和fread()函數讀寫文件時,只有使?二 進制方式,才可以讀寫任何類型的數據。最常?於讀寫數組和結構體類型數據
文件在使用時,指向打開的文件的指針 可以指?文件的當前位置,當每次讀 取或寫入數據時,是從文件指針的當 前位置開始讀取或寫入數據的,然後 指針自動移到讀寫下?個數據的位 置。所以文件指針的定位非常重要。
在C語言的stdio.h頭文件中定義的一 些文件操作中常用的庫函數。
函數feof()、rewind()、fseek()、 ftell()
feof(文件型指針變量);
如果文件型指針指向的文件的當前位置為結束標志EOF,則函數返回 一個?非零值,否則返回0值。
函數rewind()將令指向文件的指針 重新指向文件的開始位置。函數無 返回值。其調?形式為:
rewind(?件型指針變量);
fseek(?件型指針變量,偏移量,起始位置);
?
?函數fseek()
函數fseek()可以將使得指向?件的指針變量 指向?件的任何一個位置,實現隨機讀寫文件。它調用的形式為:
fseek(?文件型指針變量,偏移量,起始位 置);
函數fseek()將以文件的起始位置為基准,根據偏移量往前或往後移動指針。其中偏移量 是?個長整型數,表示從起始位置移動的字節數,正數表示指針往後移、負數表示指針往前移。起始位置用數字0、1、2或者用名字SEEK_SET、SEEK_CUR、SEEK_END 代表?文件開始、文件當前位置和文件結束位 置。如果指針設置成功,返回值為0,否則 為非0值。
函數ftell()
函數ftell()用於測試指向?件的指針的當前位置。它的調?方式為:
ftell(文件型指針變量);
函數的返回值是?個常整型數,如果 測試成功,則返回指向文件的指針當 前指向的位置距離?件開頭的字節 數,否則返回-1L