欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 文件操作之-數(shù)據(jù)塊讀寫fread(),fwrite()-C語言教程 [打印本頁]

作者: 51黑ren    時(shí)間: 2015-12-20 03:06
標(biāo)題: 文件操作之-數(shù)據(jù)塊讀寫fread(),fwrite()-C語言教程
//向PC硬盤寫入并讀出兩個(gè)學(xué)生信息fread(ElemType*,int Size,int n,FILE *)

//fwrite(ElemType*,int Size,int n,FILE *);參數(shù):ElemType*--讀寫緩沖首指針   Size--數(shù)據(jù)塊的大小
//  n--讀寫次數(shù),FILE *--文件對(duì)象指針
//本例程包含文件檢測(cè)部分內(nèi)容

#include"stdio.h"
#include"stdlib.h"//用到了exit()
/*
fread():從指定文件讀若干塊數(shù)據(jù)

*/
struct  student
{
  char name[10];
  int age;
  float score;
};

void main()
{

  int i;
  student s1[2],s2[2],*p1,*p2;//s1和s2是兩個(gè)結(jié)構(gòu)體,s1用來存儲(chǔ)鍵盤輸入數(shù)據(jù)即寫文件,s2用來存儲(chǔ)讀入數(shù)據(jù)
  FILE *fp;
  p1=s1;p2=s2;//給指針變量賦值
  if((fp=fopen("TEST2.txt","wt+"))==NULL)//“at”表示在fp文件末尾追加數(shù)據(jù)d:\\TEST.txt
  {
    printf("打開文件失敗!");
        getchar();
        exit(1);

  }else
  {

         printf("請(qǐng)輸入學(xué)生結(jié)構(gòu)體信息數(shù)據(jù):");
     printf("\n\r");

     for(i=0;i<2;i++)
         {
            scanf("%s %d %f",p1->name,&p1->age,&p1->score);//鍵盤輸入結(jié)構(gòu)體成員數(shù)據(jù) &p1->name
                p1++;
         
         }
      p1=s1;
  //   fwrite(p1,sizeof(struct student),2,fp);//向fp文件寫入數(shù)據(jù)塊2次,每次寫人一個(gè)結(jié)構(gòu)體。即一共寫入兩個(gè)結(jié)構(gòu)體數(shù)據(jù)塊
         for(i=0;i<2;i++)//注意:這兩種寫入方式都可以
         {
             fwrite(p1,sizeof(struct student),1,fp);
             p1++;
         }

         //         p2=s2;
         /*“at”表示在fp文件末尾追加數(shù)據(jù), 程序執(zhí)行到此,文件內(nèi)部指針已經(jīng)指向文件末尾
           如果要讀入fp文件的數(shù)據(jù)則必須將文件內(nèi)部指針重新指向文件第一個(gè)字節(jié)處,即若要從文件第一個(gè)字節(jié)開始讀數(shù)據(jù)
           就必須將文件內(nèi)部指針重新rewind(fp)指向文件頭
         
         */
         rewind(fp);


   printf("\n  \n");
   printf("讀出的數(shù)據(jù)是:\n");
  // fread(p2,sizeof(struct student),2,fp);//向fp文件寫入數(shù)據(jù)塊2次,每次寫人一個(gè)結(jié)構(gòu)體。即一共寫入兩個(gè)結(jié)構(gòu)體數(shù)據(jù)塊
   for(i=0;i<2;i++)
         {
            fread(p2,sizeof(struct student),1,fp);
           printf("%s\n %d\n %f\n",p2->name,p2->age,p2->score);//分行顯示
           p2++;
         }

  }
if(0==ferror(fp))printf("文件操作成功\n");//如果ferror(fp)返回值是0,表示文件操作沒有出錯(cuò)
else printf("文件操作出錯(cuò)\n");
//判斷文件內(nèi)部指針是否結(jié)尾,如果feof(fp)返回值大于1則表示文件內(nèi)部指針結(jié)尾
if(feof(fp)>1)printf("文件指針已結(jié)尾\n");
else printf("文件內(nèi)部指針沒有結(jié)尾\n");
char ch=fgetc(fp);//繼續(xù)讀出直到文件結(jié)尾
while(ch!=EOF)
{
   fgetc(fp);

}
if(feof(fp)>1)printf("文件指針已結(jié)尾\n");
else printf("文件內(nèi)部指針沒有結(jié)尾\n");
if(fclose(fp)==NULL)
  {
    printf("文件成功關(guān)閉!\n");

  }

}


///////////-----GKXW--------------////////////////////////////////////////











歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1