1、FILE
FILE是一個結構體,記錄了文件的相關信息,其在stdio.h中定義如下:
struct_iobuf
{ char*_ptr; int _cnt; char*_base; int _flag; int _file; int _charbuf; int _bufsiz; char*_tmpfname; }; typedefstruct _iobuf FILE;
2、EOF
EOF在stdio.h中被定義為-1,只是一個返回值,當fgetc()等函數遇到錯誤或者遇到文件尾時都會返回此值,因此不能憑此返回值判斷是否遇到了文件尾。判斷是否遇到文件尾的正確做法是使用feof函數。
3、feof函數
聲明在stdio.h中,函數原型為:int feof(FILE *stream)
其作用是判斷文件當前指針所指的位置是否為文件尾(假如文件最后一個字符的指針為p,則p+1的位置就會被判定為文件尾),是則返回非零值,否則返回零值。
4、fgetc函數
聲明在stdio.h中, 函數原型為:int fgetc(FILE * stream)
其作用是獲取文件當前指針所指向的字符,若成功則將文件當前指針向后移動一個字節以指向新字符,并返回剛剛獲取到的字符;若失敗或者文件當前指針指向文件尾,則返回EOF(-1)。
5、fgets函數
聲明在stdio.h中, 函數原型為:char *fgets(char *buf, int bufsize, FILE *stream)
其作用是讀取從文件當前指針所指字符開始的bufsize-1個字符,并在末尾添加一個‘0’后拷貝到buf中,最后將文件當前指針指向下一個未讀的新字符。但若未讀滿bufsize-1個字符前遇到了換行符(特指Unix下的換行符‘/n’)或者文件尾,則結束此次讀取,后續操作一樣(‘/n’不會被丟棄,也會被拷貝到buf中,文件指針會指向‘/n’后的新字符;但若是文件尾,則文件指針就指向文件尾,會使下次讀取返回NULL)。這里的bufsize就是buf的大小。若成功則返回buf,若失敗或者讀取的第一個字符就是文件尾則返回NULL。
6、fseek函數
聲明在stdio.h中,函數原型為:int fseek(FILE *stream, long offset, int fromwhere)
其作用是將文件當前指針重新指向從fromwhere偏移offset個字節的地方。成功返回0,失敗返回-1。
其中offset為正值則向后偏移,為負值則向前偏移。fromwhere值及其含義為:
SEEK_SET(0): 文件開頭
SEEK_CUR(1): 當前位置
SEEK_END(2): 文件結尾
新聞熱點
疑難解答
圖片精選