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函式支援中文。