fopen打开文件时位置指针的问题 .
来源:互联网 发布:vb中format是什么意思 编辑:程序博客网 时间:2024/05/22 03:28
#include <stdio.h>int main(void){ int ch; FILE *fp; char fname[]="IN.DAT"; char tempch; 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)); rewind(fp); printf("以a方式打开,但rewind函数后,写入数据后位置:%d\n",ftell(fp)); fprintf(fp,"%s","after rewind function"); printf("以a方式打开,但rewind函数后且写入字符串after rewind function,写入数据后位置:%d\n",ftell(fp)); rewind(fp); while((tempch=fgetc(fp))!=EOF) printf("%c",tempch); fclose(fp); } return 0;}
最近在写一个程序是涉及到文件的操作,其中遇到一个问题是打开文件后判断文件是否为空,刚开始想到了每次打开文件都是向文件添加数据,就是以a+方式打开,就想到用ftell函数直接得到当前位置如果不为0则说明文件不为空,但是这样程序运行一直没打到想要的效果,调试时发现打开文件后用ftell函数得到的当前位置值为零,自己不禁产生疑惑,后来翻了下谭浩强的《C程序设计》上面写着“用a+方式打开的文件,原来的文件不被删除,位置指针移到文件末尾”。为了消除疑惑自己写代码测试下,看下具体情况。
总结:1)可以发现用fopen函数打开文件时,位置指针都是处在文件开头处,包括用a和a+方式打开,只是在第一次写时位置指针会移动到文件末尾处。
2)只要用"a”方式打开,那么无论用fseek,rewind等文件位置指针定位函数,在写入文件信息时,均只能写入到文件末尾。
- fopen打开文件时位置指针的问题
- fopen打开文件时位置指针的问题 .
- fopen打开文件的方式的问题
- 文件的打开 (fopen()函数)
- 文件的打开(fopen函数)
- 文件的打开(fopen函数)
- 文件的打开(fopen函数)
- fopen()打开文件fwrite()修改原文件的问题!!!
- PHP语言 fopen()函数不能打开文件的问题
- fopen打开相对路径的文件
- fopen打开文件的模式详解
- fopen打开相对路径的文件
- 留心一下fopen打开文件的模式
- 文件打开函数fopen
- 关于fopen打开文件
- fopen打开文件方式
- fopen c++打开文件
- fopen打开文件方式
- 杭电ACM 2037,今年暑假不AC(贪心…
- 杭电ACM 1052(Tian Ji -- The Hor…
- 关于C++的cin.get()的问题
- 杭电ACM 1239 简单的搜索类 Callin…
- 杭电ACM 2048 神、上帝以及老天爷 …
- fopen打开文件时位置指针的问题 .
- 挨踢江湖之五
- 新浪博客,高亮代码的添加方法
- 杭电ACM 2044 一只小蜜蜂 递推类
- html常用标签
- 杭电ACM 2045不容易系列之(3)—— LE…
- 解决
- 杭电ACM 2046 骨牌铺方格 递推类
- 杭电ACM 2046 阿牛的EOF牛肉串