當成功地打開文件後,接下來的事情就是對文件進行輸入或輸出操作,最簡單的是調用 getc(或 fgetc) 和 putc(或 fputc) 函數進行字符的輸入和輸出。
putc 函數的調用形式如下:
putc(ch, fp);
這裡 ch 是待輸出的某個字符,它可以是一個字符常量,也可以是一個字符變量;fp 是文件指針。putc(ch, fp) 的功能是將字符 ch 寫到文件指針 fp 所指的文件中去。如果輸出成功,putc 函數返回所輸出的字符;如果輸出失敗,則返回一個 EOF 值。EOF 是在 stdio.h 庫函數文件中定義的符號常量,其值等於 -1。
fputc 函數的調用形式和功能與 putc 函數完全相同。
例1 把從鍵盤輸入的文本按原樣輸出到名為 file_a.dat 的文件中,用字符 @ 作為鍵盤輸入結束的標志。
(1)打開文件
(2)從鍵盤輸入一個字符
(3)判斷輸入的字符是否為 @,若是,結束循環,執行步驟(7)
(4)把剛輸入的字符輸出到指定的文件中
(5)從鍵盤輸入一個字符
(6)重復步驟(3)至(5)
(7)關閉文件
(8)程序結束
程序如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 FILE *fpout; 7 char ch; 8 if ((fpout = fopen("F:\\WEB\\TEST\\file_a.dat", "w")) == NULL) 9 { 10 printf("Cant't open this file !\n"); 11 exit(0); //使用exit函數,必須包含stdlib.h頭文件 12 } 13 ch = getchar(); 14 while (ch != '@') 15 { 16 putc(ch, fpout); 17 ch = getchar(); 18 } 19 fclose(fpout); 20 return 0; 21 } View Code在屏幕中輸入abcdefghijklmnopqrstuvwxyz@,@作為輸入結束標志。
文件 file_a.dat 的輸出結果如下:
getc 函數的調用形式如下:
ch = getc(fp);
fp 是文件指針。函數的功能是從 fp 指定的文件中讀入一個字符,並把它作為函數值返回。以上表達式中 getc 函數把從文件中讀入的一個字符賦給變量 ch。
fgetc 函數的調用形式和功能與 getc 函數完全相同。
例2 把已存在的 file_a.dat 文本文件中的內容原樣輸出到終端屏幕上。
(1)打開文件
(2)從指定文件中讀入一個字符
(3)判斷讀入的是否是文件結束標志,若是,結束循環,執行步驟(7)
(4)把剛輸入的字符輸出到終端屏幕
(5)從文件中再讀入一個字符
(6)重復步驟(3)至(5)
(7)關閉文件
(8)程序結束
注意:無論調用哪種函數讀取文件,一定要先執行一次讀操作,然後才能判斷文件是否結束。
程序如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 FILE *fpin; 7 char ch; 8 9 if ((fpin = fopen("F:\\WEB\\TEST\\file_a.dat", "r")) == NULL) 10 { 11 printf("Can't open this file !\n"); 12 exit(0); 13 } 14 15 ch = getc(fpin); 16 //判斷文件是否結束可以使用 feof 函數, 17 //該函數適用於文本文件和二進制文件 18 //函數返回值為 1 則文件結束;0 則未結束 19 while (ch != EOF) //or while(feof(fpin) == 0) 20 { 21 putchar(ch); 22 ch = getc(fpin); 23 } 24 fclose(fpin); 25 26 return 0; 27 } View Code運行程序,結果如下: