程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 以數據塊的情勢讀寫文件詳解及完成代碼

C說話 以數據塊的情勢讀寫文件詳解及完成代碼

編輯:關於C++

C說話 以數據塊的情勢讀寫文件詳解及完成代碼。本站提示廣大學習愛好者:(C說話 以數據塊的情勢讀寫文件詳解及完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 以數據塊的情勢讀寫文件詳解及完成代碼正文


fgets() 有局限性,每次最多只能從文件中讀取一行內容,由於 fgets 碰到換行符就停止讀取。假如願望讀取多行內容,須要應用 fread 函數;響應地寫入函數為 fwrite。

fread() 函數用來從指定文件中讀取塊數據。所謂塊數據,也就是若干個字節的數據,可所以一個字符,可所以一個字符串,可所以多行數據,並沒有甚麼限制。fread() 的原型為:

size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );

fwrite() 函數用來向文件中寫入塊數據,它的原型為:

size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );

對參數的解釋:

  1. ptr 為內存區塊的指針,它可所以數組、變量、構造體等。fread() 中的 ptr 用來寄存讀取到的數據,fwrite() 中的 ptr 用來寄存要
  2. 寫入的數據。
  3. size:表現每一個數據塊的字節數。
  4. count:表現要讀寫的數據塊的塊數。
  5. fp:表現文件指針。
  6. 實際上,每次讀寫 size*count 個字節的數據。
  7. size_t 是在 stddef.h 頭文件中應用 typedef 界說的數據類型,表現無符號整數,也即非正數,經常使用來表現數目。

    前往值:前往勝利讀寫的塊數,也即 count。假如前往值小於 count:

    關於 fwrite() 來講,確定產生了寫入毛病,可以用 ferror() 函數檢測。
    關於 fread() 來講,能夠讀到了文件末尾,能夠產生了毛病,可以用 ferror() 或 feof() 檢測。

    【示例】從鍵盤輸出一個數組,將數組寫入文件再讀掏出來。

    #include<stdio.h>
    #define N 5
    int main(){
      //從鍵盤輸出的數據放入a,從文件讀取的數據放入b
      int a[N], b[N];
      int i, size = sizeof(int);
      FILE *fp;
      if( (fp=fopen("D:\\demo.txt", "rb+")) == NULL ){
        printf("Cannot open file, press any key to exit!\n");
        getch();
        exit(1);
      }
     
      //從鍵盤輸出數據 並保留到數組a
      for(i=0; i<N; i++){
        scanf("%d", &a[i]);
      }
      //將數組a的內容寫入到文件
      fwrite(a, size, N, fp);
      //將文件中的地位指針從新定位到文件開首
      rewind(fp);
      //從文件讀取內容並保留到數組b
      fread(b, size, N, fp);
      //在屏幕上顯示數組b的內容
      for(i=0; i<N; i++){
        printf("%d ", b[i]);
      }
      printf("\n");
      fclose(fp);
      return 0;
    }
    

    運轉成果:

    23 409 500 100 222↙
    23 409 500 100 222

    fwrite()/fread() 函數直接操作字節,建議應用二進制方法翻開文件。請浏覽《C說話中文本文件與二進制文件的差別》懂得更多。

    翻開 D:\\demo.txt,發明文件內容基本沒法浏覽。這是由於我們應用"rb+"方法翻開文件,數據以二進制情勢寫入文件,普通沒法浏覽。

    數據寫入終了後,地位指針在文件的末尾,要想讀取數據,必需將文件指針挪動到文件開首,這就是rewind(fp);的感化。更多關於rewind函數的內容請點擊:C說話rewind函數。

    文件的後綴紛歧定是 .txt,它可所以隨意率性的,你可以本身定名,例如 demo.ddd、demo.doc、demo.diy 等。

    【示例】從鍵盤輸出兩個先生數據,寫入一個文件中,再讀出這兩個先生的數據顯示在屏幕上。

    #include<stdio.h>
    #define N 2
    struct stu{
      char name[10]; //姓名
      int num; //學號
      int age; //年紀
      float score; //成就
    }boya[N], boyb[N], *pa, *pb;
    int main(){
      FILE *fp;
      int i;
      pa = boya;
      pb = boyb;
      if( (fp=fopen("d:\\demo.txt", "wb+")) == NULL ){
        printf("Cannot open file, press any key to exit!\n");
        getch();
        exit(1);
      }
      //從鍵盤輸出數據
      printf("Input data:\n");
      for(i=0; i<N; i++,pa++){
        scanf("%s %d %d %f",pa->name, &pa->num,&pa->age, &pa->score);
      }
      //將數組 boya 的數據寫入文件
      fwrite(boya, sizeof(struct stu), N, fp);
      //將文件指針重置到文件開首
      rewind(fp);
      //從文件讀取數據並保留到數據 boyb
      fread(boyb, sizeof(struct stu), N, fp);
      //輸入數組 boyb 中的數據
      for(i=0; i<N; i++,pb++){
        printf("%s %d %d %f\n", pb->name, pb->num, pb->age, pb->score);
      }
      fclose(fp);
      return 0;
    }
    

    運轉成果:

    Input data:
    Tom 2 15 90.5↙
    Hua 1 14 99↙
    Tom  2  15  90.500000
    Hua  1  14  99.000000

    以上就是對C說話以數據塊情勢讀取文件的示例和材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved