//隨機讀寫數據,讀寫操作由文件內部指針指向決定
#include"stdio.h"
#include"stdlib.h"
//聲明一個數據塊
struct student
{
char name[10];
int age;
float score;
};//該結構體占用20個字節
void main()
{
FILE *fp;
student s1[]={{"wangyan",40,89.0},{"王玚",6,99.1}};//初始化兩個學生對象信息
student s2[2],*p1,*p2;
p1=s1;
p2=s2;
fp=fopen("testfseek.txt","wt+");
if(fp==NULL)
{
printf("文件打開失敗");
getchar();
exit(1);
}
else
{
printf("文件打開成功!\n");
fwrite(p1,sizeof(struct student),2,fp);//
if(feof(fp)>1) printf("文件已結尾\n");//如果feof(fp)返回值大于1,說明文件內部指針指向結尾
else printf("文件不在結尾處\n");
fseek(fp,sizeof(struct student),SEEK_SET);
//將文件內部指針定位到從文件頭起始后移sizeof(struct student)字節處
int i=ftell(fp);
printf("當前文件內部指針離文件頭字節數:%d\n",i);
fread(p2,sizeof(struct student),1,fp);
printf("讀到的內容是:\n");
printf("%s %d %f\n",p2->name,p2->age,p2->score);
fseek(fp,0,0);//文件內部指針重新定位到文件頭,偏移0個字節
char ch=fgetc(fp);
printf("重新讀到的字符是:\n");
while(ch!=EOF)//如果沒有這個循環體 if(feof(fp)>1) 表達式就不會為真
{
printf("%c",ch);
ch=fgetc(fp);
}
printf("\n");
if(feof(fp)>1) printf("文件已結尾\n");//如果feof(fp)返回值大于1,說明文件內部指針指向結尾
else printf("文件不在結尾處\n");
if(ferror(fp)==0)printf("文件沒有出錯!\n");
else printf("文件出錯!\n");
}
if(NULL==fclose(fp))printf("文件關閉成功\n");
else printf("文件關閉失敗\n");
}
/*
fseek(FILE *,int(位移字節數),0(文件內部指針位移起始處))
0 SEEK_SET:文件頭
1 SEEK_CUR:文件當前位置
2 SEEK_END:文件尾

////////////----------GKXW--////////2015年11月24日23:01:00///////////
*/
|