第 1 頁:8.1 C文件概述 |
第 4 頁:8.2 文件處理程序結(jié)構(gòu)和文件輸入輸出常用庫函數(shù) |
6.字符串輸入/輸出庫函數(shù)
函數(shù)fgets()和fputs()分別用于從正文文件輸入字符串和向正文文件輸出字符串。它們的說明形式分別為
char *fgets(char *str,int n, FILE *fp)
和
fputs(char *str, FILE *fp)
函數(shù)fgets() 用于從文件讀取字符序列,并存于字符指針?biāo)赋龅拇鎯^(qū)域中。當(dāng)連續(xù)讀人n-1個字符,或遇到換行符時,讀字符過程結(jié)束。
函數(shù)fgets()與函數(shù)gets()都在讀人的字符序列之后自動存儲字符串結(jié)束標(biāo)記'\0’,使其成為字符串,并返回字符率的首字符指針。但它們有差別,函數(shù)fgets()除增加整型參數(shù)和文件指針參數(shù)之外,還在讀到換行符時,存儲換行符,而函數(shù)gets()不存儲換行符。
函數(shù)fputs()的作用是將字符串復(fù)制到文件。其中字符串的結(jié)束標(biāo)記符是不復(fù)制的,也不在復(fù)制的字符序列之后另外再添加換行符,這一點與函數(shù)puts()不同。
7.文件定位庫函數(shù)
利用前面介紹的函數(shù)進行文件操作,只能順序讀寫文件。然而,在有些場合,還需要能對文件作隨機存取。實際上,因文件是存儲在外部存儲介質(zhì)上的數(shù)據(jù)流,程序即刻能讀寫的是文件某一位置上的數(shù)據(jù),這個位置稱為文件的當(dāng)前讀寫位置。對于順序讀寫情況,每讀寫一個字符后,當(dāng)前位置就自動向后移一個字符位置。對于允許隨機讀寫的文件,要讀寫其他別的位置上的數(shù)據(jù),就得改變文件當(dāng)前讀寫位置。實現(xiàn)這樣的移動可調(diào)用庫函數(shù)rewind()和fseek()來實現(xiàn)。另設(shè)有函數(shù)ftell()用于查詢文件當(dāng)前讀寫位置。
函數(shù)rewind()的說明形式為
void rewind( FILE *fp)
函數(shù)rewind()的作用是使文件當(dāng)前位置重新回到文件之首。該函數(shù)沒有返回值。
函數(shù)fseek()是實現(xiàn)文件隨機存取的最主要函數(shù),用它可以將文件的當(dāng)前位置移到文件的任意位置上。所謂文件的隨機存取(或隨機讀寫),是指讀寫完一個字符(或字節(jié))之后,并不一定要讀寫其后繼的字符(或字節(jié)),可以改變當(dāng)前位置,去讀寫文件中其他位置上的字符(或字節(jié))。
相關(guān)推薦:推薦:2010年計算機軟件水平考試必備完美攻略北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |