EOF
定义
#define EOF (-1)
用法
在文本文件中,由于ASCⅡ码没有不会出现-1值,因此可以用来作为文本文件的标志结束
feof
定义
#define _IOEOF 0x0010
#define feof(_stream) ((_stream)->_flag & _IOEOF)
用法
- 在二进制文件中,采用feof宏进行判断
- feof可以判断二进制文件也可以判断文本文件
- 如果遇到文件结束符,feof返回值是16,否则为0
注意事项
文本文件的位置指针是由其中的结构体成员变量_ptr来标识,只有文件指针已经达到文件末尾在进行读写操作,其文件状态标识符才为_IOEOF
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin , *fout ;
char ch = 0x12;
fin = fopen("test.txt","wb");
fputc( ch , fin);
fclose(fin);
fout = fopen("test.txt","rb");
char c;
while(!feof(fout))
{
c = getc( fout );
printf("%X\n",c );
}
fclose( fout );
return 0;
}
// 输出结果为
12
FFFFFFFF
为了避免出现打印了不需要的内容,可以使用如下读写顺序
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin , *fout ;
char ch = 0x12;
fin = fopen("test.txt","wb");
fputc( ch , fin);
fclose(fin);
fout = fopen("test.txt","rb");
char c;
c = getc( fout );
while(!feof(fout))
{
printf("%X\n",c );
c = getc( fout );
}
fclose( fout );
return 0;
}
// 打印结果为
12