4.feof()和rewind()函數
這兩個函數的調用格式為:
int feof(FILE *stream);
int rewind(FILE *stream);
feof()函數檢測文件位置指示器是否到達了文件結尾,若是則返回一個非0值,否則返回0。這個函數對二進制文件操作特別有用, 因為二進制文件中,文件結尾標志EOF也是一個合法的二進制數,只簡單的檢查讀入字符的值來判斷文件是否結束是不行的。如果那樣的話, 可能會造成文件未結尾而被認為結尾,所以就必須有feof()函數。
下面的這條語句是常用的判斷文件是否結束的方法。
while(!feof(fp))
fgetc(fp);
while為循環語句,將在下面介紹。
rewind()函數用於把文件位置指示器移到文件的起點處,成功時返回0,否則,返回非0值。
1.2.2 非標准文件函數
這類函數最早用於UNIX操作系統,ANSI標准未定義,但有時也經常用到,DOS 3.0以上版本支持這些函數。它們的頭文件為io.h。
一、文件的打開和關閉
1.open()函數
open()函數的作用是打開文件,其調用格式為:
int open(char *filename, int access);
該函數表示按access的要求打開名為filename的文件,返回值為文件描述字,其中access有兩部分內容:基本模式和修飾符,兩者用" "("或")方式連接。修飾符可以有多個,但基本模式只能有一個。access的規定如表3-2。
表3-2 access的規定
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
基本模式 含義 修飾符 含 義
────────────────────────────
O_RDONLY 只讀 O_APPEND 文件指針指向末尾
O_WRONLY 只寫 O_CREAT 文件不存在時創建文件,
屬性按基本模式屬性
O_RDWR 讀寫 O_TRUNC 若文件存在, 將其長度
縮為0, 屬性不變
O_BINARY 打開一個二進制文件
O_TEXT 打開一個文字文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
open()函數打開成功,返回值就是文件描述字的值(非負值),否則返回-1。