SOGO論壇
  登入   註冊   找回密碼
查看: 607|回覆: 0
列印 上一主題 下一主題

[技術文章] 檔案指摽 [複製連結]

Rank: 3Rank: 3

狀態︰ 離線
跳轉到指定樓層
1
發表於 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);
   }

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-28 23:37

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部