国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言以數據塊的形式讀寫文件實例代碼

2020-01-26 14:30:42
字體:
來源:轉載
供稿:網友

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 );

對參數的說明:

ptr 為內存區塊的指針,它可以是數組、變量、結構體等。fread() 中的 ptr 用來存放讀取到的數據,fwrite() 中的 ptr 用來存放要寫入的數據。

size:表示每個數據塊的字節數。

count:表示要讀寫的數據塊的塊數。

fp:表示文件指針。

理論上,每次讀寫 size*count 個字節的數據。

size_t 是在 stddef.h 頭文件中使用 typedef 定義的數據類型,表示無符號整數,也即非負數,常用來表示數量。

返回值:返回成功讀寫的塊數,也即 count。如果返回值小于 count:

對于 fwrite() 來說,肯定發生了寫入錯誤,可以用 ferror() 函數檢測。

對于 fread() 來說,可能讀到了文件末尾,可能發生了錯誤,可以用 ferror() 或 feof() 檢測。

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

#include<stdio.h>#define N 5int 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

主站蜘蛛池模板: 教育| 芷江| 朝阳区| 乌鲁木齐县| 铜陵市| 乌兰县| 东平县| 宜都市| 凯里市| 桑植县| 延安市| 洛宁县| 建德市| 青州市| 伊川县| 大关县| 遵义市| 喀喇| 巴马| 远安县| 安陆市| 四子王旗| 阿拉善右旗| 武威市| 邢台市| 礼泉县| 公主岭市| 漾濞| 库车县| 满洲里市| 泉州市| 罗城| 美姑县| 合肥市| 施甸县| 旬邑县| 安龙县| 德令哈市| 绥棱县| 阿克| 南岸区|