當前位置:
首頁 > 知識 > 用fread和fwrite讀寫文件

用fread和fwrite讀寫文件

ANSI C文件系統提供fread()和fwrite()兩個函數,用於讀/寫長於一位元組的數據類型。這兩個函數允許讀/寫各種類型的數據塊。它們的原型是:

  1. size_t fread(void *buffer,size_t num_bytes,size_t count,FILE *fp);
  2. size_t fwrite(const void *buffer,size_t num_bytes,size_t count,FILE *fp);

對fread()而言,buffer是接收讀入數據的內存區的指針。 對fwrite()而言,buffer是寫入到那個文件的信息的指針。

count的值確定讀/寫多少項,每項長度等於num_bytes。

fp是指向事先打開的流的指針。

正常情況下,fread()返回讀入的項數,fwrite()返回寫出的項數。

只要文件按二進位打開,fread()和fwrite()就可以讀/寫各類信息。以下程序先向文件寫double,int和long型數據,然後再讀回。

  1. //向磁碟文件寫入一些非字元型的數據,並且再將其讀回到內存
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int main(void)
  5. {
  6. FILE *fp;
  7. double d1 = 12.23,d2;
  8. int i1 = 101,i2;
  9. long l1 = 123023L,l2;
  10. if((fp=fopen("test", "wb+"))==NULL) {
  11. printf("Cannot open file.
    ");
  12. exit(1);
  13. }
  14. //將3個值寫入到文件中
  15. fwrite(&d1, sizeof(double), 1, fp);
  16. fwrite(&i1, sizeof(int), 1, fp);
  17. fwrite(&l1, sizeof(long), 1, fp);
  18. //重置到文件的開始處
  19. rewind(fp);
  20. //將3個值從文件中讀出
  21. fread(&d2, sizeof(double), 1, fp);
  22. fread(&i2, sizeof(int), 1, fp);
  23. fread(&l2, sizeof(long), 1, fp);
  24. printf("%f %d %ld", d, i, l);
  25. fclose(fp);
  26. return 0;
  27. }

用fread和fwrite讀寫文件

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

springboot之定時任務
C++ 下 typeof 的實現

TAG:程序員小新人學習 |