1. 程式人生 > >造夢先森Kai的專欄

造夢先森Kai的專欄

        檔案的開啟操作 fopen 開啟一個檔案

      檔案的關閉操作 fclose 關閉一個檔案

      檔案的讀寫操作 fgetc 從檔案中讀取一個字元
              fputc 寫一個字元到檔案中去
              fgets 從檔案中讀取一個字串
              fputs 寫一個字串到檔案中去
              fprintf 往檔案中寫格式化資料
              fscanf 格式化讀取檔案中資料
              fread 以二進位制形式讀取檔案中的資料
              fwrite 以二進位制形式寫資料到檔案中去
              getw 以二進位制形式讀取一個整數
              putw 以二進位制形式存貯一個整數

    檔案狀態檢查函式  feof 檔案結束
              ferror 檔案讀/寫出錯
              clearerr 清除檔案錯誤標誌
              ftell 瞭解檔案指標的當前位置

      檔案定位函式 rewind 反繞
              fseek 隨機定位
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct{
    int age;
    char name[30];
}people;

int main ()
{
    FILE *pFile, *fp;
    int i;
    people per[3];
    per[0].age=20;strcpy(per[0].name,"li");
    per[1].age=18;strcpy(per[1].name,"wang");
    per[2].age=21;strcpy(per[2].name,"zhang");

	//寫檔案 
    if((pFile = fopen ("file.txt", "wb"))==NULL)
    {
        printf("cant open the file");
        exit(0);
    }

    for(i=0;i<3;i++)
    {
        if(fwrite(&per[i],sizeof(people),1,pFile)!=1)
            printf("file write error\n");
    }
    fclose (pFile);
    
    //讀取檔案 
    people p;
    if((fp=fopen("file.txt","rb"))==NULL)
    {
      printf("cant open the file");
      exit(0);
    }
	//如果讀到資料,就顯示;否則退出 
    while(fread(&p,sizeof(people),1,fp)==1)   
    {
        printf("%d %s\n",p.age,p.name);
    }  
    close(fp);
    
    return 0;
}

檔案的開啟

1.函式原型

FILE *fopen(char *pname,char *mode)

2.功能說明 (1)分配給開啟檔案一個FILE 型別的檔案結構體變數,並將有關資訊填入檔案結構體變數; (2)開闢一個緩衝區; (3)呼叫作業系統提供的開啟檔案或建立新檔案功能,開啟或建立指定檔案; FILE *:指出fopen是一個返回檔案型別的指標函式; 正常返回:被開啟檔案的檔案指標。 異常返回:NULL,表示開啟操作不成功。

3.引數說明 pname:是一個字元指標,它將指向要開啟或建立的檔案的檔名字串。 mode:是一個指向檔案處理方式字串的字元指標。所有可能的檔案處理方式如下:

檔案開啟模式:
r:讀取,如果檔案不存在,函式呼叫失敗;
w:為寫入操作開啟一個空檔案。若檔案不存在,則建立一個檔案;若給定的檔案已經存在,那麼它的內容將被清空;
a:為寫入操作開啟檔案。若檔案不存在,則首先建立一個檔案;若檔案存在,那麼在該檔案結尾新增新資料,在寫入資料之前,不會移除已有的EOF標記;
r+:開啟檔案用於寫入和讀取,檔案必須存在;
w+:開啟檔案用於寫入和讀取,其他同w;
a+:開啟檔案用於寫入和讀取,其他同a。 
wb:以只寫方式開啟或新建一個二進位制檔案,只允許寫資料。
wb+:以讀/寫方式開啟或建立一個二進位制檔案,允許讀和寫。
wt+:以讀/寫方式開啟或建立一個文字檔案,允許讀寫。
at+:以讀/寫方式開啟一個文字檔案,允許讀或在文字末追加資料。
ab+:以讀/寫方式開啟一個二進位制檔案,允許讀或在檔案末追加資料
 

以二進位制形式讀取檔案中的資料

1. 函式原型

int fread(void *buffer,unsigned sife,unsigned count,FILE *fp)

2. 功能說明   從由fp指定的檔案中,按二進位制形式將sife*count個數據讀到由buffer指出的資料區中。    3. 引數說明 buffer:這是一個void型指標,指出要將讀入資料存放在其中的儲存區首地址。 sife:指出一個數據塊的位元組數,即一個數據塊的大小尺寸。 count:指出一次讀入多少個數據塊(sife)。 fp:這是個檔案指標,指出要從其中讀出資料的檔案。

4.返回值   正常返回:實際讀取資料塊的個數,即count。   異常返回:如果檔案中剩下的資料塊個數少於引數中count指出的個數,或者發生了錯誤,返回0值。此時可以用feof()和ferror()來判定到底出現了什麼情況。