SOGO論壇

標題: 檔案指摽 [列印本頁]

作者: 108    時間: 2012-7-23 08:32:08     標題: 檔案指摽

雖然 我們可以利用 printf、 scanf、 getchar、 putchar 等指令來執行 標準檔 stdin 與 stdout 的輸入與輸出 指令,當 輸入資料存於一檔案時, 我們 亦可 利用 輸入轉向 的方式以 scanf 及 getchar 的指令來輸入。

我們可以利用 檔案指標 方式 來達到 更有彈性的做法。其方法如下:
於 中 含有 檔案指標 的 資料結構 的設定。因此, 可以宣告檔案指標如下:


      FILE *fp;

欲使用一檔案 必須 呼叫 fopen, 使用結束時 必須呼叫 fclose。函數 fopen() 的宣告如下:
        FILE *fopen(char *name, char *mode);

其中 name 為欲使用 檔案的 路徑及名稱, mode 為檔案 使用的方式,當 mode = "r" 時, 表示 該檔 僅做輸入用; mode 為 "w" 時, 表示輸出用; mode 為 "a" 時, 則 表示 可附加在檔案後。
其相關 輸入輸出 函數的 宣告如下:

        int getc(FILE *fp)
        int putc(int c, FILE *fp)                  
        int fscanf(FILE *fp, char *format,...)
        int fprintf(FILE *fp, char *format,...)

這些 函數 (亦可能為 macro 指令) 類似 getchar、 putchar、 scanf 與 printf,只不過多了一個 FILE* 的引數。
檔案結尾的 函數 fclose 其宣告為

    int fclose(FILE *fp)

例 3: 試設計一程式 如同 1.8 節的程式, 來 copy 一檔案 file1.txt 至另一檔案。

   #include <stdio.h>
   void main()
   {   char c;
       FILE *fpin, *fpout;

       fpin = fopen("file1.txt", "r");
       if( !fpin )
       {
           printf("The file: file1.txt is not found!\n");
           return;
       }

       fpout = fopen("file2.txt", "w");
       if( !fpout )
       {
           printf("The file: file2.txt is not found, or no available space!\n");
           return;
       }

       while( (c=getc(fpin)) != EOF)
           putc(c, fpout);

       fclose(fpin);
       fclose(fpout);
   }






歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM