#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp=NULL
long len=0L//文件长度
fp=fopen("test.dat","rb")//假设当前目录有test.dat文件
if(!fp)//检查文件打开是否正常
{
printf("文件打开失败,程序退出!\n")
exit(1)
}
fseek(fp,0L,SEEK_END)//文件定位到文件末尾
len=ftell(fp)//获取文件长度
if(len/1024>0)
printf("文件大小为%ldKB!\n",len/1024)
else
printf("文件大小为%ldB!\n",len)
rewind(fp)//文件指针移到开始处
if(fp)//关闭文件
{
fclose(fp)
fp=NULL
}
return 0
}
int fseek( FILE *stream, long offset, int origin )函数fseek()为文件指针stream设置位置数据。origin的值应该是下列值之一,
SEEK_SET(从文件的开始处开始搜索)
SEEK_CUR(从当前位置开始搜索)
SEEK_END(从文件的结束处开始搜索)
fseek()成功时返回0,失败时返回非零。
1、使用fseek函数即可更改文件指针的位置。
函数名: fseek
功 能: 重定位流上的文件指针
用 法: int fseek(FILE *stream, long offset, int fromwhere)
描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值: 成功,返回0,否则返回其他值。
2、例子:
fseek(fp,100L,0)//把文件内部指针移动到离文件开头100字节处;fseek(fp,100L,1)//把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2)//把文件内部指针退回到离文件结尾100字节处。
fread(&k,sizeof(int),1,fp)//这句写错了一个字母#include <stdio.h>
main()
{ FILE *fp
int i , a[6]={1,2,3,4,5,6},k
fp=fopen("data.dat","w+b")
for (i=0i<6i++)
{fseek(fp,0L,0) //使位置指针回到文件首
fwrite(&a[5-i],sizeof(int),1,fp)}
//每次写入都会覆盖,所以最后写入的是a[5-5]=a[0]=1
rewind(fp)//使位置指针回到文件首
fread(&k,sizeof(int),1,fp)//读取上面最后写入的那个数据,即1
fclose(fp)
printf("%d\n",k)//结果为1
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)