C語言中,使用fgets函數(shù)遍可以一行行讀取文件。
1、fgets函數(shù):原型:char * fgets(char * buf, int bufsize, FILE * stream);功能:從文件結(jié)構(gòu)體指針stream中讀取數(shù)據(jù),每次讀取一行。說明:讀取的數(shù)據(jù)保存在buf指向的字符數(shù)組中,每次最多讀取bufsize-1個字符(第bufsize個字符賦值為\0)。如果該行不足bufsize個字符,則讀完該行就結(jié)束,如果該行超過bufsize-1個字符,則fgets只返回一個不完整的行,buf緩沖區(qū)以\0字符結(jié)束,下一次fgets調(diào)用會繼續(xù)讀取該行剩余的字符;頭文件:stdio.h;返回值:若讀入成功,返回與參數(shù)buf相同的字符指針,若讀入過程中遇到EOF或發(fā)生錯誤,返回NULL指針。所以當(dāng)遇到返回值為NULL的情況時,應(yīng)使用ferror或feof函數(shù)檢查是發(fā)生錯誤還是遇到EOF。2、例程:
123456789101112131415161718192021222324 | #include<stdio.h> int a; char b,c[100]; int main(){ FILE * fp1 = fopen ( "input.txt" , "r" ); //打開輸入文件 FILE * fp2 = fopen ( "output.txt" , "w" ); //打開輸出文件 if (fp1==NULL || fp2==NULL) { //若打開文件失敗則退出 puts ( "不能打開文件!" ); rturn 0; } fscanf (fp1, "%d" ,&a); //從輸入文件讀取一個整數(shù) b= fgetc (fp1); //從輸入文件讀取一個字符 fgets (c,100,fp1); //從輸入文件讀取一行字符串 printf ( "%ld" , ftell (fp1)); //輸出fp1指針當(dāng)前位置相對于文件首的偏移字節(jié)數(shù) fputs (c,fp2); //向輸出文件寫入一行字符串 fputc (b,fp2); //向輸出文件寫入一個字符 fprintf (fp2, "%d" ,a); //向輸出文件寫入一個整數(shù) fclose (fp1); //關(guān)閉輸入文件 fclose (fp2); //關(guān)閉輸出文件,相當(dāng)于保存 return 0; } |