关于feof函数使用的说明
2014-03-02 14:18
363 查看
函数原型: int feof(FILE *stream);
功能:检测流上的文件结束符
返回值:feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。
什么时候结束了,当读取到那个字节为0xFF时,就结束了。
EOF是文本文件结束的标志,在文本文件中都是以ASCII码字符表示的,取值范围 0-127 共128个字符,EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。
而在二进制文件中,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志,为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。
feof函数要读取到最后一个位置的内容,要强调位置和内容,举例说,我叫你去火车的最后一节车厢,这就是位置,我叫你一直往前走,直到摸到铁轨,这就是内容。所以feof函数实际上是根据读取到最后一个位置的内容来判断的。所以要多走一字节。
大家,经常要按行读取文件,总会遇到麻烦。我用代码说吧:
文本内容
hello
world
while(!feof(fp))
{
char buf[30];
fgets(buf,30,fp);
printf("%s",buf);
printf("%d\n",strlen(buf));
char ch = fgetc(fp);//这就是多读一字节,来判断是否结束
if(ch == EOF)//the end file
{
break;
}
fseek(fp,-1,SEEK_CUR);
}
功能:检测流上的文件结束符
返回值:feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。
什么时候结束了,当读取到那个字节为0xFF时,就结束了。
EOF是文本文件结束的标志,在文本文件中都是以ASCII码字符表示的,取值范围 0-127 共128个字符,EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。
而在二进制文件中,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志,为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。
feof函数要读取到最后一个位置的内容,要强调位置和内容,举例说,我叫你去火车的最后一节车厢,这就是位置,我叫你一直往前走,直到摸到铁轨,这就是内容。所以feof函数实际上是根据读取到最后一个位置的内容来判断的。所以要多走一字节。
大家,经常要按行读取文件,总会遇到麻烦。我用代码说吧:
文本内容
hello
world
while(!feof(fp))
{
char buf[30];
fgets(buf,30,fp);
printf("%s",buf);
printf("%d\n",strlen(buf));
char ch = fgetc(fp);//这就是多读一字节,来判断是否结束
if(ch == EOF)//the end file
{
break;
}
fseek(fp,-1,SEEK_CUR);
}
相关文章推荐
- 关于使用count(X) 函数的说明(附加:关于null的说明以及和0的区别)
- 关于使用fseek函数之后feof函数无法结束文件的警告 http://bbs.csdn.net/topics/390759596
- Thinkphp3.2 关于快捷函数 模板引擎换为smarty时 地址跳转函数U()的使用修改及说明
- 关于主线程等待子线程退出状态的判断函数的使用说明
- 枚举、函数-关于oracle函数listagg的使用说明-by小雨
- 关于php的数组函数的使用和说明
- 关于使用函数feof的理解
- centos上关于trac的使用说明
- 关于 Android 程序使用 Support Library 属性的几点说明
- 关于C++ STL中sort()函数的使用
- 关于Adodb.Stream的使用说明
- javascript中的prototype属性使用说明(函数功能扩展)
- 关于使用类成员函数作为回调的方法
- 关于header()函数的使用
- 关于vi替换命令的使用说明(ZZ)
- 关于 Delphi 中流的使用(8) 压缩与解压缩的函数
- Linux下命令行程序设计--getopt_long()函数使用说明
- Python自然语言处理学习笔记(33):4.5 关于函数的更多使用
- 关于最近很火的“快用苹果助手”和“pp助手”使用正版软件闪退问题的说明
- ERROR: Removing 'hello': Device or resource busy //关于使用系统定义的模块加载和卸载函数