1. 程式人生 > >C語言 fread()與fwrite()函式說明與示例

C語言 fread()與fwrite()函式說明與示例

1.作用

  讀寫檔案資料塊。

2.函式原型

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

     其中,ptr:指向儲存結果的指標;size:每個資料型別的大小;count:資料的個數;stream:檔案指標

     函式返回讀取資料的個數。

  (2)size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

       其中,ptr:指向儲存資料的指標;size:每個資料型別的大小;count:資料的個數;stream:檔案指標

     函式返回寫入資料的個數。

3.注意

(1)寫操作fwrite()後必須關閉流fclose()。

  (2)不關閉流的情況下,每次讀或寫資料後,檔案指標都會指向下一個待寫或者讀資料位置的指標。

4.讀寫常用型別

(1)寫int資料到檔案

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int main ()
 4 {
 5   FILE * pFile;
 6   int buffer[] = {1, 2, 3, 4};
 7   if((pFile = fopen ("myfile.txt
", "wb"))==NULL) 8 { 9 printf("cant open the file"); 10 exit(0); 11 } 12 //可以寫多個連續的資料(這裡一次寫4個) 13 fwrite (buffer , sizeof(int), 4, pFile); 14 fclose (pFile); 15 return 0; 16 }
View Code

  (2)讀取int資料

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
4 int main () { 5 FILE * fp; 6 int buffer[4]; 7 if((fp=fopen("myfile.txt","rb"))==NULL) 8 { 9 printf("cant open the file"); 10 exit(0); 11 } 12 if(fread(buffer,sizeof(int),4,fp)!=4) //可以一次讀取 13 { 14 printf("file read error\n"); 15 exit(0); 16 } 17 18 for(int i=0;i<4;i++) 19 printf("%d\n",buffer[i]); 20 return 0; 21 }
View Code

 執行結果:

5.讀寫結構體資料

(1)寫結構體資料到檔案

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 typedef struct{
 5     int age;
 6     char name[30];
 7 }people;
 8 
 9 int main ()
10 {
11     FILE * pFile;
12     int i;
13     people per[3];
14     per[0].age=20;strcpy(per[0].name,"li");
15     per[1].age=18;strcpy(per[1].name,"wang");
16     per[2].age=21;strcpy(per[2].name,"zhang");
17 
18     if((pFile = fopen ("myfile.txt", "wb"))==NULL)
19     {
20         printf("cant open the file");
21         exit(0);
22     }
23 
24     for(i=0;i<3;i++)
25     {
26         if(fwrite(&per[i],sizeof(people),1,pFile)!=1)
27             printf("file write error\n");
28     }
29     fclose (pFile);
30     return 0;
31 }
View Code

  (2)讀結構體資料

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 typedef struct{
 5     int age;
 6     char name[30];
 7 }people;
 8 
 9 int main () {
10     FILE * fp;
11     people per;
12     if((fp=fopen("myfile.txt","rb"))==NULL)
13     {
14       printf("cant open the file");
15       exit(0);
16     }
17 
18     while(fread(&per,sizeof(people),1,fp)==1)   //如果讀到資料,就顯示;否則退出
19     {
20         printf("%d %s\n",per.age,per.name);
21     }
22     return 0;
23 }
View Code

執行結果:

相關推薦

C語言 fread()fwrite()函式說明示例

1.作用   讀寫檔案資料塊。 2.函式原型   (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );      其中,ptr:指向儲存結果的指標;size:每個資料型別的大小;count:資料的個數;str

C語言常用檔案操作函式fprinf/fscanffwrite/fread

fprintf是將資料轉換為字元後再寫入檔案 fwrite是將資料不經轉換直接以二進位制的形式寫入檔案 一、fprintf函式。 fprintf(fp, "%d", buffer); 是將格式化的資料寫入檔案 fprintf(檔案指標,格式字串,輸出表列); 1.

C語言可變長引數函式預設引數提升

學習本章內容的時候,首先需要知道可變引數提升相關的知識。 原文地址:https://blog.csdn.net/astrotycoon/article/details/8284501 1、概述 C標準中有一個預設引數提升(default argument promotions)規則。

軟體素材---linux C語言:拼接字串函式 strcat的用例(char陣列聯合使用挺好)

【標頭檔案】#include <string.h> 【原型】 1 char *strcat(char *dest, const char *src); 【引數】: dest 為目標字串指標,src 為源字串指標。

C語言中變數和函式的宣告定義

一、變數在將變數前,先解釋一下宣告和定義這兩個概念。宣告一個變數意味著向編譯器描述變數的型別,但並不為變數分配儲存空間。定義一個變數意味著在宣告變數的同時還要為變數分配儲存空間。在定義一個變數的同時還可以對變數進行初始化。 區域性變數通常只定義不宣告,而全域性變數多在原始檔中定義,在標頭檔案中宣告。 區域性變

C語言學習筆記_5函式程式結構

/**************************************************************************** *第五章函式與程式結構 *****2016

C語言基礎教程 printf( )函式中的回車‘\r’回車換行'\n'

今天完成了初級階段的學習,其實以前在開發微控制器的時候用過C語言,但是沒有系統的學過,所以再次學習感覺能夠查缺補漏。 C語言中的printf( )函式是一個很重要的函式。printf( )中的字元包含了三種: (1)以%開頭的格式控制字元 (2)以 \ 開頭的轉義字元 (3)普通字元 在printf

fwrite fread fscanf fprintf 及C語言對字串操作函式

fwrite fread fscanf fprintf 都是屬於C函式用於檔案讀寫,前兩者對二進位制檔案讀寫,後兩者只要用於格式化的讀取、輸出文字,對文字檔案讀寫。  fscanf()  格式化的讀取,從檔案中讀取  fprintf() 格式化的寫入,寫入到檔案中

C++語言特性?虛擬函式純虛擬函式的作用區別?

一、C++語言的特性有哪些? 1、封裝 封裝就是將抽象得到的資料行為(或功能)相結合,形成一個有機的整體,也就是將資料與操作資料的函式程式碼進行有機地結合,形成類,其中的資料和函式都是類的組成部分,稱為類的成員。 2、繼承 繼承是從先輩處得到的屬性和行為特徵。類的繼承,是新

C語言中的內部函式外部函式

內部函式:   如果一個函式只能被本檔案中其它函式所呼叫,它稱為內部函式。在定義內部函式時,在函式名和函式型別的前面加static。即   static 型別識別符號 函式名 (形參表) 如: static int fun (int a, int b) 內部函式又稱靜態函

C/C++】C語言math.h庫函式中atanatan2的區別

Ref 在 math.h 標準庫中,定義了兩個反正切函式: //返回以弧度表示的 x 的反正切 double atan(double x) //返回以弧度表示的 y/x 的反正切。y 和 x 的值的符號決定了正確的象限。 double at

C語言程式設計基礎-09函式返回值及形參

函式 返回值 形參實參 函式 在大規模的程式中需要對語句進行分組管理,把相互之間聯絡比較緊密的語句合併成一組; 分組可以在多個不同層次上進行,最低一級分組的結果叫程式碼塊,程式碼塊由{}大括號包括; 在大括號前面新增     型別名 函式名()的就是函式; 函式的形式如 v

#C語言學習感悟# printf( )函式中的回車‘\r’回車換行'\n'之我見。

今天完成了初級階段的學習,其實以前在開發微控制器的時候用過C語言,但是沒有系統的學過,所以再次學習感覺能夠查缺補漏。C語言中的printf( )函式是一個很重要的函式。printf( )中的字元包含了三種:(1)以%開頭的格式控制字元(2)以 \ 開頭的轉義字元(3)普通字元

C語言的變數和函式java的屬性和方法有什麼區別

想要了解面向物件和麵向過程的區別,一般從最基本的封裝,繼承,多型入手 封裝性 變數和方法的區別:c語言的變數只有區域性變數和全域性變數,沒有訪問修飾符,但java的屬性可以有訪問修飾符(public ,private等),增加了訪問許可權,java沒有全域性變數,方法同理。

[轉]c語言宏定義#define的理解資料整理

執行 跟蹤 single 字母 number 而是 字符串 endif 一段 原文地址:http://www.cnblogs.com/haore147/p/3646934.html 1. 利用define來定義 數值宏常量   #define 宏定義是個演技非常高超的替

C語言:二維數組指針實踐1

mvc 數組 vpx c99 mar ebe inf xsl ndt 實1r遜5駛誹喜濟51http://docstore.docin.com/psb360 毓V私陶塹4v31Fhttp://www.docin.com/zucga0192 53o97gw蓖沙賭2yh

C語言中關鍵詞static的用法作用域

細心 錯誤 不同 color 運行程序 可能 gpo 需要 之間 一、面向過程設計中的static 轉載:http://blog.csdn.net/celerylxq/article/details/6160499 1、靜態全局變量 在全局變量前,加上關鍵字stati

C++語言學習(四)——類對象

clas 進行 自身 ngs 符號表 方法 index clu 每一個 C++語言學習(四)——類與對象 一、構造函數(constructor) 1、構造函數簡介 C++語言中,構造函數是與類名相同的特殊成員函數。在類對象創建時,自動調用構造函數,完成類對象的初始化。類對象

C++語言學習(十)——繼承派生

child mem 公有 char 單繼承 同名成員函數 重定義 重載函數 顯示 C++語言學習(十)——繼承與派生 一、類之間的關系 1、類之間的組合關系 組合關系是整體與部分的關系。組合關系的特點:A、將其它類的對象作為當前類的成員使用B、當前類的對象與成員對象的生命周

初識C語言之基本編程思想基本概念掃盲

預編譯 mingw 1.5 集成開發環境 運算 集成 思想 多任務 運行程序 h3 { margin-top: 0.46cm; margin-bottom: 0.46cm; direction: ltr; line-height: 173%; text-align: jus