
最近编写程序涉及文件的操作. 遇到的问题之一是打开文件后确定文件是否为空. 我只是以为每次打开文件时,都会向文件中添加数据fopen后指针位置,该文件以a +模式打开. ,我想到了使用ftell函数直接获取当前位置. 如果不为0,则文件不为空,但是该程序尚未运行到期望的效果. 调试时,我发现打开文件后ftell函数获得的当前位置值为零. ,我忍不住想了一下,后来转向谭浩强的“ C编程”fopen后指针位置,其内容为“用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 +开头,但是位置指针在移动过程中将移至文件末尾. 首先写.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-241599-1.html
韬韬演技太好
有爱国的国民
别人也认为是放屁