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.txtView Code", "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 }
(2)讀取int資料
1 #include <stdio.h> 2 #include <stdlib.h> 3View Code4 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 }
執行結果:
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/fscanf與fwrite/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庫函式中atan與atan2的區別
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