题目11-2
#include
int main()
{
FILE *fp;
int i;
char ch[]="abcd",t;
fp=fopen("abc.dat","wb+");
for(i=0;i<4;i++)
fwrite(&ch[i],1,1,fp);
fseek(fp,-2L,SEEK_END);
fread(&t,1,1,fp);
fclose(fp);
printf("%c",t);
return 0;
}
知识点:
一、文件的打开与关闭
1、打开:函数原型为 FILE *fopen( char *filename, char *type)
其中filename为被打开的文件名,type为操作文件的方式
常见的操作方式有以下:
r 只读 w只写 a追加 rb 只读(二进制文件) wb只写 ab追加
r+读/写 w+读/写 a+读/写 rb+ 读/写(二进制文件) wb+读/写 ab+读/写
2、关闭:fclose(文件指针变量)
3、文件的随机访问与定位
(1)fseek函数,用于控制移动文件流的读写位置
函数原型为 int fseek(FILE *stream, long offset ,int whence)
其中,stream为已经打开的文件指针,offset为根据whence来移动读写位置的位移数。whence的取值有以下几种可能:
SEEK_SET 表示以距文件开头offset个位移量为新的读写位置,或者用0表示
SEEK_CUR 表示以目前的读写位置往后增加offset个位移量,或者用1表示
SEEK_END 表示将读写位置指向文件尾后再增加offset个位移量,或者用2表示
(2)位置指针返回头文件的操作
int rewind(FILE *fp);
(3)ftell 函数
long ftell(FILE *stream);
用于得到文件位置指针当前位置相对于文件首部的偏移字节数。
代码段
#include<stdio.h>
int main()
{
FILE *fp;
int i;
char ch[]="abcd",t;
fp=fopen("abc.dat","wb+");//以读写方式打开一个二进制文件abc.dat
for(i=0;i<4;i++)
fwrite(&ch[i],1,1,fp);//循环将ch中1*1大小的数据块ch[i]写入fp所指向的空间
fseek(fp,-2L,SEEK_END);//将位置指针指向文件尾后在增加-2个位移量,即将位置指针退回到离文件结尾2个字节处
fread(&t,1,1,fp);//从fp所指向的文件中读1*1大小的数据块放入t中
fclose(fp);
printf("%c",t);
return 0;
}
运行结果: