讀取文本文件
若要讀取一個文件,請使用r模式打開。一般來說,讀取文件時最好不要用fscanf,因?yàn)椋俏募臄?shù)據(jù)格式非常標(biāo)準(zhǔn),否則fscanf并不能準(zhǔn)確地讀取數(shù)據(jù)。請換用fgets一次讀入一行,然后分析提取所需數(shù)據(jù)。下面的代碼演示了一個讀入文件并在屏幕上顯示其內(nèi)容的過程:
?
#includeint main() {FILE *f;char s[1000];f=fopen("infile","r");if (!f) return 1;while (fgets(s,1000,f)!=NULL) printf("%s",s);fclose(f);return 0;}
fget函數(shù)在遇到文件結(jié)束符eof時會返回NULL。程序依次讀入各行(本例中最長1,000個字符)并將其在標(biāo)準(zhǔn)輸出設(shè)備上顯示。注意,printf語句的格式字符串中并不包含\n ,這是因?yàn)閒gets會在它讀入的每一行末尾加上一個\n 。所以,若某行的長度超出了限制(由fgets的第二個參數(shù)指定),您會發(fā)現(xiàn)它將不能被完整地顯示。
C 常見錯誤不要把fclose誤輸入成close。close函數(shù)是存在的,所以誤輸入成close也能通過編譯。如果只是打開或關(guān)閉幾個文件的話,程序甚至還表現(xiàn)為正常工作的樣子。但是,如果是在一個循環(huán)中打開和關(guān)閉文件的話,程序最后就會因耗盡可用的文件句柄或內(nèi)存空間而崩潰,因?yàn)閏lose沒有正確地將文件關(guān)閉。
電子發(fā)燒友App









評論