【积累】fopen打开文件时位置指针的问题
2010-12-01 10:47
169 查看
最近在写一个程序是涉及到文件的操作,其中遇到一个问题是打开文件后判断文件是否为空,刚开始想到了每次打开文件都是向文件添加数据,就是以a+方式打开,就想到用ftell函数直接得到当前位置如果不为0则说明文件不为空,但是这样程序运行一直没打到想要的效果,调试时发现打开文件后用ftell函数得到的当前位置值为零,自己不禁产生疑惑,后来翻了下谭浩强的《C程序设计》上面写着“用a+方式打开的文件,原来的文件不被删除,位置指针移到文件末尾”。为了消除疑惑自己写代码测试下,看下具体情况。
测试代码:
运行结果:
可以发现用fopen函数打开文件时,位置指针都是处在文件开头处,包括用a和a+方式打开,只是在第一次写时位置指针会移动到文件末尾处。
测试代码:
#include <stdio.h> int main(void) { int ch; FILE *fp; char fname[]="IN.DAT"; fp=fopen(fname,"w"); if (fp!=NULL) { printf("以W方式打开,位置:%d\n",ftell(fp)); fprintf(fp,"%s","open with w"); printf("以W方式打开,写入数据后位置:%d\n",ftell(fp)); fclose(fp); } fp=fopen(fname,"r"); if (fp!=NULL) { printf("以R方式打开,位置:%d\n",ftell(fp)); fclose(fp); } fp=fopen(fname,"a+"); if (fp!=NULL) { printf("以a方式打开,位置:%d\n",ftell(fp)); fprintf(fp,"%s","open with a+"); printf("以a方式打开,写入数据后位置:%d\n",ftell(fp)); fclose(fp); } return 0; }
运行结果:
可以发现用fopen函数打开文件时,位置指针都是处在文件开头处,包括用a和a+方式打开,只是在第一次写时位置指针会移动到文件末尾处。
相关文章推荐
- fopen打开文件时位置指针的问题
- fopen打开文件时位置指针的问题 .
- 工作问题积累(十)打开选择文件和选择文件夹的对话框
- fopen()函数以"a+"方式打开一个不存在的文件后读写出现问题
- VS2010安装包制作 [桌面快捷图标 右键属性 打开文件位置]问题解决
- PHP使用fopen()函数打开文件提示权限不够问题
- 关于fopen打开文件出错问题(数目受限)
- VS2010安装包制作 [桌面快捷图标 右键属性 打开文件位置]问题解决
- C语言fopen()函数:打开一个文件并返回文件指针
- C文件操作fopen打开标记设置问题【学习笔记】
- fopen打开文件的方式的问题
- fopen打开文件失败的问题
- sharepoint 2013 文档库 资源管理器打开报错 在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试。
- sharepoint 2013 文档库 资源管理器打开报错 在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试。
- 解决CHM文件无法从网络共享位置上直接打开的问题
- PHP语言 fopen()函数不能打开文件的问题
- fopen()打开文件fwrite()修改原文件的问题!!!
- delphi中关于ShellExecute打开文件所在的位置(处理文件名中有逗号,单引号问题)
- sharepoint 2013 文档库 使用资源管理器打开是灰色的,浏览器版本是IE 9在IE 11可正常打开,或提示在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试
- AIX/linux/unix fopen 打开2G文件问题