1. 程式人生 > >C語言檔案讀寫函式——fputc和fgetc

C語言檔案讀寫函式——fputc和fgetc

C語言fputc()函式:寫檔案函式(將一指定字元寫入檔案流中)

標頭檔案:

 #include <stdio.h>

定義函式:

int fputc(int c, FILE * stream);

函式說明:fputc 會將引數c 轉為unsigned char 後寫入引數stream 指定的檔案中.

返回值:fputc()會返回寫入成功的字元, 即引數c. 若返回EOF 則代表寫入失敗.

範例

#include <stdio.h>
main()
{
  FILE * fp;
  char a[26] = "abcdefghijklmnopqrstuvwxyz";
  int i;
  fp = fopen("noexist", "w");

  for(i = 0; i < 26; i++)
    fputc(a[i], fp);

  fclose(fp);
}

C語言fputs()函式:寫檔案函式(將一指定的字串寫入檔案)

標頭檔案:

#include <stdio.h>

定義函式:

int fputs(const char * s, FILE * stream);

函式說明:fputs()用來將引數s 所指的字串寫入到引數stream 所指的檔案內.

返回值:若成功則返回寫出的字元個數, 返回EOF 則表示有錯誤發生.

另有說明:

  瞭解了在C語言中如何開啟檔案後就可以正式進行檔案的讀寫操作了,檔案根據型別又分為ASCII檔案和二進位制檔案,我們首先從簡單的入手,先看看ASCII檔案(文字檔案)是如何讀取的。

  ASCII檔案(文字檔案)中儲存的是一個字元序列,只要按照順序一個個的讀出直到檔案結尾,即可實現對整個檔案的讀取了
,寫入檔案也是一樣的道理。

fputc函式

  fputc函式的作用就是將一個字元寫入到檔案中,其呼叫形式為:

fputc(ch,pFile);

其中ch就是要寫入的字元,pFile是指向FILE結構的指標,通過fopen函式開啟檔案即可獲取pFile。

  寫入檔案有可能會失敗,但怎麼才能知道是否正確寫入到檔案了呢?這時候就需要看fputc函式的返回值了,fputc函式如果成功的將字元寫入到檔案了,則其返回值就是寫入的那個字元,如果失敗,則返回EOF(End Of File的意思)。EOF是一個符號常量,在stdio.h中EOF被定義為-1,因此見到EOF把他當做-1就是了

fgetc函式

  知道fputc是做什麼的了,fgetc基本也就知道了,這個就是從檔案中讀入一個字元的函式,其呼叫形式為:

ch=fgetc(pFile);

  引數pFile和fputc函式的引數一樣,只不過少了一個引數ch,跑到返回值這裡了。當fgetc成功從檔案中讀入字元後,ch就是讀取到的字元,如果讀取失敗,則ch=EOF。

  綜上可見,EOF在檔案的讀寫操作中扮演中重要的角色,當讀取的值為EOF的時候,程式就知道檔案已經讀完了

fputc函式和fgetc函式例項演示

  說一大堆不如直接來段程式記憶深刻,下面知蟻就做一個示例程式,讀取一個文字檔案的資料,然後寫入到另外一個文字檔案中去,我們先準備一個有內容“I like www.letuknowit.com”的文字檔案。

#include “stdio.h”

void main()
{
    char ch;
    FILE *pSrc,*pDes;

    pSrc = fopen(“srcfile.txt”,“r”);    //開啟檔案讀取資料    
    pDes = fopen(“desfile.txt”,“w”);    //開啟檔案寫入資料

    if((NULL==pSrc) || (NULL==pDes))
    {
        printf(“Open file failed,can’t go on\n);
        return;
    }

    ch=fgetc(pSrc);    //讀取第一個字元
    while(EOF != ch)
    {
        fputc(ch,pDes);    //寫入字元
        ch=fgetc(pSrc);    //讀取下一個字元
    }

    printf(“Successed copy srcfile to desfile\n);

    fclose(pSrc); //別忘了關閉
    fclose(pDes); //同上
}

執行程式之前,需要在程式執行目錄下新建一個文字檔案,內容隨便寫。值得一提的是,fputc函式和fgetc函式支援中文