找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2960|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

文件操作之--隨機(jī)讀寫(xiě),檢測(cè)fseek(),ferror()-C語(yǔ)言教程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99624 發(fā)表于 2015-12-20 03:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//隨機(jī)讀寫(xiě)數(shù)據(jù),讀寫(xiě)操作由文件內(nèi)部指針指向決定

#include"stdio.h"
#include"stdlib.h"
//聲明一個(gè)數(shù)據(jù)塊
struct student
{
  char name[10];
  int  age;
  float score;
};//該結(jié)構(gòu)體占用20個(gè)字節(jié)

void main()
{
  FILE *fp;
  student s1[]={{"wangyan",40,89.0},{"王玚",6,99.1}};//初始化兩個(gè)學(xué)生對(duì)象信息
  student s2[2],*p1,*p2;
  p1=s1;
  p2=s2;
  fp=fopen("testfseek.txt","wt+");
  if(fp==NULL)
  {
    printf("文件打開(kāi)失敗");
    getchar();
        exit(1);
  }
  else
  {
     printf("文件打開(kāi)成功!\n");
     fwrite(p1,sizeof(struct student),2,fp);//
    if(feof(fp)>1) printf("文件已結(jié)尾\n");//如果feof(fp)返回值大于1,說(shuō)明文件內(nèi)部指針指向結(jié)尾
     else   printf("文件不在結(jié)尾處\n");
     fseek(fp,sizeof(struct student),SEEK_SET);
   //將文件內(nèi)部指針定位到從文件頭起始后移sizeof(struct student)字節(jié)處

     int i=ftell(fp);
    printf("當(dāng)前文件內(nèi)部指針離文件頭字節(jié)數(shù):%d\n",i);
    fread(p2,sizeof(struct student),1,fp);
     printf("讀到的內(nèi)容是:\n");
     printf("%s %d %f\n",p2->name,p2->age,p2->score);
        fseek(fp,0,0);//文件內(nèi)部指針重新定位到文件頭,偏移0個(gè)字節(jié)
        char ch=fgetc(fp);
        printf("重新讀到的字符是:\n");
        while(ch!=EOF)//如果沒(méi)有這個(gè)循環(huán)體 if(feof(fp)>1) 表達(dá)式就不會(huì)為真
        {
                printf("%c",ch);
                ch=fgetc(fp);
        }
        printf("\n");
        if(feof(fp)>1) printf("文件已結(jié)尾\n");//如果feof(fp)返回值大于1,說(shuō)明文件內(nèi)部指針指向結(jié)尾
     else   printf("文件不在結(jié)尾處\n");
     if(ferror(fp)==0)printf("文件沒(méi)有出錯(cuò)!\n");
        else  printf("文件出錯(cuò)!\n");
  }
  if(NULL==fclose(fp))printf("文件關(guān)閉成功\n");
  else printf("文件關(guān)閉失敗\n");
}
/*
fseek(FILE *,int(位移字節(jié)數(shù)),0(文件內(nèi)部指針位移起始處))
0   SEEK_SET:文件頭
1   SEEK_CUR:文件當(dāng)前位置
2   SEEK_END:文件尾


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

*/


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表