文件的结尾和文件开头
2017-01-02 21:52
274 查看
c语言中文件的结尾指的是文件的最后一个字符的下一个字符
例如:文件a.txt中有三个字符abc,即文件大小为3
那么文件的实际内容如下图.
![](http://s4.51cto.com/wyfs02/M01/8C/60/wKioL1hrBEaiQpc6AAAh2qwlCA8915.png)
echo -n abc > a.txt
c=98
c=99
c=-1
所以正确做法应该是
c=98
c=99
如何读出文件最后一个字符c,如下:
feof(fp)=0
c=-1
feof(fp)=1
例如:文件a.txt中有三个字符abc,即文件大小为3
那么文件的实际内容如下图.
![](http://s4.51cto.com/wyfs02/M01/8C/60/wKioL1hrBEaiQpc6AAAh2qwlCA8915.png)
echo -n abc > a.txt
#include <stdio.h> #include <stdlib.h> int main(void){ FILE* fp = fopen("a.txt","r"); if(NULL==fp){ perror("fopen"),exit(-1); } int c; while(!feof(fp)){ //当文件指针第一次到达文件结尾处时,feof函数返回的是0. c = getc(fp); printf("c=%d\n",c); if(ferror(fp)){ perror("ferror"),exit(-1); } } fclose(fp); return 0; }c=97
c=98
c=99
c=-1
所以正确做法应该是
#include <stdio.h> #include <stdlib.h> int main(void){ FILE* fp = fopen("a.txt","r"); if(NULL==fp){ perror("fopen"),exit(-1); } int c; while((c=getc(fp))!=EOF){ printf("c=%d\n",c); if(ferror(fp)){ perror("ferror"),exit(-1); } } return 0; }c=97
c=98
c=99
如何读出文件最后一个字符c,如下:
#include <stdio.h> #include <sys/types.h> #include <fcntl.h> int main(void){ FILE* fp = fopen("a.txt","r"); fseek(fp,-1,SEEK_END); char c; c = getc(fp); printf("c=%d\n",c); fseek(fp,0,SEEK_END); printf("feof(fp)=%d\n",feof(fp));//此时在文件结尾处 //即文件最后一个字符(即c字符)的下一个字符处 //结果为0 c = getc(fp); printf("c=%d\n",c); //c=-1 printf("feof(fp)=%d\n",feof(fp));//结果为1 return 0; }c=99
feof(fp)=0
c=-1
feof(fp)=1
相关文章推荐
- [JAVA]用JAVA文件读写操作截取文件中所有以x开头y结尾的字符串
- Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾
- Informatica写Parameter文件时为何会在开头和结尾出现双引号""
- 一天一个linux基础命令之查看文件开头结尾部分内容tail
- vim 到文件开头 结尾
- Linux统计文件/目录数量ls -l | grep "^-" | wc -l匹配开头和结尾
- 【慕课网】如何判断字符串a是否以字符串b开头或结尾 给某文件系统所有.sh文件和.py文件加上可执行权限
- vi编辑光标跳到文件开头和结尾以及清空文件命令
- 【脚本】如何在linux shell下面查找 abc开头或xy结尾的文件,只用一个命令
- python-12-如何判断字符串a是否以字符串b开头或结尾(改变文件权限)?
- 编译头文件时遇到意外的文件结尾
- Shell 批量重命名以“.log”结尾的文件
- VC++错误,在查找预编译头指令时遇到意外的文件结尾
- 用ed实现在文件开头插入文本
- C++中常见的文件读取结尾问题
- 写文件开头出现乱码
- SVN 关键字 的使用 (应用在项目文件中 - 开头的注释)
- 牛B的Mathematica:寻找开头和结尾都是字母y的形容词
- 刨根问底文件结尾
- 在查找预编译头指令时遇到意外的文件结尾