C中如何讀寫檔案

1.在C語言中檔案的操作要先開啟檔案格式如下
   FILE *fp;
   fp = fopen(“檔案名稱",“模式");
    **假設檔案指標變數名稱是fp

2.fp是一種檔案指標的變數,代表檔案編號,開啟檔案成功後,即以檔案編號來存取資料

§

3.模式如下:
    r 讀取模式 w 寫入模式 a 增加模式  b 二進位操作模式

4.

r

開啟一個文字檔(text),供程式讀取

w

開啟一個文字檔(text),供程式將資料寫入此檔案內。如果磁碟內不包含這個檔案,則系統會自行建立這個檔案。如果磁碟內包含這個檔案,則此檔案內容會被蓋過而消失

a

開啟一個文字檔(text),供程式將資料寫入此檔案的末端。如果此檔案不存在,則系統會自行建立此檔案。

rb

開啟一個二元檔(binary),供程式讀取。

wb

開啟一個二元檔,供程式將資料寫入此檔案內。如果磁碟內不包含這個檔案,則系統會自行建立這個檔案。如果磁碟內包含這個檔案,此檔案內容會被蓋過而消失

ab

開啟一個二元檔(binary),供程式將資料寫入此檔案末端,如果此檔案不存在,則系統會自行建立此檔案。

5.在C語言中檔案的操作結束要關閉檔案格式如下
   fclose(fp);

6.在C語言中關閉檔案前會將檔案緩衝區資料寫入磁碟檔案內,否則檔案緩衝區資料會遺失。(§ 一個C語言程式,在同一時間可開啟的檔案數量有限,一般是20個,如果你的程式要開啟超過20個檔案時,你必須將暫時不用的檔案關閉)

7.格式化輸入和輸出檔案使用
     fprintf(fp,"格式",變數名);
     fscanf(fp,"格式",變數名);

範例程式 : 寫入檔案範例

/* ====================
寫入檔案範例
==================== */
#include<stdio.h>
#include<stdlib.h>

int main()
{

    FILE *fp;
    int i,sum,temp,f1;
    fp = fopen("data.txt","w");
    sum = 1;
    temp = 2;
    f1 = 0;
    fprintf(fp,"sum=  %d \n" ,sum);
    fprintf(fp,"temp = %d\n",temp);
    fprintf(fp," f1 = %d \n",f1);
    fclose(fp);
    system("pause");
    return 0;
}
範例程式 : 讀出檔案範例

/* ====================
讀出檔案範例

若要指定檔案位置,要以 "\\" 來代置"\",因為"\"在C語言中有特殊用途。例如: c:\123\data.txt 要寫成 c:\\123\\data.txt

==================== */
#include<stdio.h>
#include<stdlib.h>

int main()
{

    FILE *fp;
    int i,sum,temp,f1;
    fp = fopen("c:\\123\\data.txt","r");
    fscanf(fp,"%d",&sum);
    fscanf(fp,"%d",&temp);
    fscanf(fp,"%d",&f1);
    printf("sum=  %d " ,sum) ;
    printf("temp = %d",temp);
    printf(" f1 = %d \n",f1);
    fclose(fp);
    system("pause");
    return 0;
}

8.int fputc(char c, FILE *fp);
主要功能是將一個字元寫入某檔案內,例如:fputc("a",fp) 執行成功時會傳回寫入字元的ASCII值,執行失敗時會傳回EOF(此值為-1)
{#include <stdio.h>;}

9.char  fgetc(FILE  *fp);
從檔案中讀回一個字元,執行成功時會傳回讀取字元,執行失敗時或到檔案結束會傳回EOF (此值為-1)
{#include <stdio.h>;}

10. int fputs(char *string, FILE *fp);
主要功能是將一個字串寫入某檔案內,例如:fputc(“abcdef",fp) 執行成功時會傳回寫入字串的長度值,執行失敗時會傳回EOF(此值為-1)
{#include <stdio.h>;}

11.char *fgets(char *string, int length, FILE * stream);
fgets從檔案讀入指定長度的字串。當讀到一個換行字元時,fgets函式就會終止。長度的參數包含字串最後的null字元。因此,若要讀入N個字元,則長度的參數要給N+1。 {#include <stdio.h>;}

12.int feof(File *stream);
傳回檔案指標是否已在檔案的最後面, 若是則傳回非零值;若否則傳回0。 {#include <stdio.h>;}