文本文件
C中的文本文件很簡(jiǎn)單,不難掌握。所有的文本文件操作函數(shù)和相關(guān)類型都由stdio庫(kù)提供。
當(dāng)您的C程序需要文本輸入輸出(I/O)功能,且只有一個(gè)信息輸入來(lái)源和一個(gè)輸出目標(biāo)時(shí),可以使用stdin(標(biāo)準(zhǔn)輸入)和stdout(標(biāo)準(zhǔn)輸出)進(jìn)行編程,然后在命令行使用輸入輸出重定向,為各信息流指定不同的來(lái)源或目標(biāo)。
- printf - 格式化輸出到標(biāo)準(zhǔn)輸出設(shè)備
- scanf - 從標(biāo)準(zhǔn)輸入設(shè)備格式化輸入
- puts - 向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符串
- gets - 從標(biāo)準(zhǔn)輸入設(shè)備讀入一個(gè)字符串
- putc - 向標(biāo)準(zhǔn)輸出設(shè)備輸出一個(gè)字符
- getc, getchar - 從標(biāo)準(zhǔn)輸入設(shè)備讀入一個(gè)字符
標(biāo)準(zhǔn)輸入輸出的優(yōu)點(diǎn)是易于使用。同時(shí),I/O重定向的功能也非常強(qiáng)大。例如,您要編寫(xiě)一個(gè)程序從標(biāo)準(zhǔn)輸入讀取信息并統(tǒng)計(jì)總字符個(gè)數(shù):
?
#include\ #include void main() {char s[1000];int count=0;while (gets(s)) count += strlen(s);printf("%d n",count);}
錄入上面的程序并運(yùn)行。運(yùn)行時(shí)程序會(huì)等待鍵盤輸入,請(qǐng)鍵入幾行字符,然后用CTRL-D (eof)通知程序輸入結(jié)束。gets函數(shù)不斷讀取輸入行,直至檢測(cè)到eof,此時(shí)返回0并結(jié)束while循環(huán)。按下CTRL-D后,您將在標(biāo)準(zhǔn)輸出設(shè)備(屏幕)上看到字符的計(jì)數(shù)。(可用man gets命令或者從編譯器文檔獲得更多關(guān)于gets函數(shù)的知識(shí)。)
現(xiàn)在假設(shè)您要統(tǒng)計(jì)某個(gè)文件的字符個(gè)數(shù)。若上面代碼編譯生成的可執(zhí)行文件名為xxx,您可以執(zhí)行以下命令:
?
xxx < filename
此命令將文件名為filename的文件內(nèi)容(而非鍵盤輸入的內(nèi)容)傳給程序。也可以使用管道獲得同樣的結(jié)果:
?
cat < filename | xxx
還可以將輸出重定向到一個(gè)文件:
?
xxx < filename > out
此命令將程序得出的字符計(jì)數(shù)輸出到一個(gè)名為out的文本文件。
有時(shí)需要直接使用文本文件。例如,要打開(kāi)并讀寫(xiě)某個(gè)特定的文件。您的程序可能要同時(shí)操作多個(gè)輸入輸出流,或者要在運(yùn)行期間根據(jù)需要載入和保存數(shù)據(jù)文件或配置文件(如文本編輯器)。這時(shí)就要使用stdio中的文件I/O函數(shù):
- fopen - 打開(kāi)一個(gè)文本文件
- fclose - 關(guān)閉一個(gè)文本文件
- feof - 檢測(cè)文件eof結(jié)束標(biāo)記
- fprintf - 格式化輸出到一個(gè)文件
- fscanf - 從一個(gè)文件讀取格式化輸入
- fputs - 向文件輸出一個(gè)字符串
- fgets - 從文件讀入一個(gè)字符串
- fputc - 向文件輸出一個(gè)字符
- fgetc - 從文件讀入一個(gè)字符
評(píng)論
查看更多