C語言--文件操作

         文件的打開操作 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()來判定到底出現了什麼情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章