奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

C語(yǔ)言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼

時(shí)間:2024-10-09 19:33:04 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C語(yǔ)言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼

  大家知道C語(yǔ)言怎么以數(shù)據(jù)塊的形式讀寫文件嗎?下面小編為大家整理了C語(yǔ)言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼,希望能幫到大家!

  fgets() 有局限性,每次最多只能從文件中讀取一行內(nèi)容,因?yàn)?fgets 遇到換行符就結(jié)束讀取。如果希望讀取多行內(nèi)容,需要使用 fread 函數(shù);相應(yīng)地寫入函數(shù)為 fwrite。

  fread() 函數(shù)用來(lái)從指定文件中讀取塊數(shù)據(jù)。所謂塊數(shù)據(jù),也就是若干個(gè)字節(jié)的數(shù)據(jù),可以是一個(gè)字符,可以是一個(gè)字符串,可以是多行數(shù)據(jù),并沒(méi)有什么限制。fread() 的原型為:

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

  fwrite() 函數(shù)用來(lái)向文件中寫入塊數(shù)據(jù),它的原型為:

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

  對(duì)參數(shù)的說(shuō)明:

  ptr 為內(nèi)存區(qū)塊的指針,它可以是數(shù)組、變量、結(jié)構(gòu)體等。fread() 中的 ptr 用來(lái)存放讀取到的數(shù)據(jù),fwrite() 中的 ptr 用來(lái)存放要寫入的數(shù)據(jù)。

  size:表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù)。

  count:表示要讀寫的數(shù)據(jù)塊的塊數(shù)。

  fp:表示文件指針。

  理論上,每次讀寫 size*count 個(gè)字節(jié)的數(shù)據(jù)。

  size_t 是在 stddef.h 頭文件中使用 typedef 定義的數(shù)據(jù)類型,表示無(wú)符號(hào)整數(shù),也即非負(fù)數(shù),常用來(lái)表示數(shù)量。

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

  對(duì)于 fwrite() 來(lái)說(shuō),肯定發(fā)生了寫入錯(cuò)誤,可以用 ferror() 函數(shù)檢測(cè)。

  對(duì)于 fread() 來(lái)說(shuō),可能讀到了文件末尾,可能發(fā)生了錯(cuò)誤,可以用 ferror() 或 feof() 檢測(cè)。

  【示例】從鍵盤輸入一個(gè)數(shù)組,將數(shù)組寫入文件再讀取出來(lái)。

  #include#define N 5int main(){ //從鍵盤輸入的數(shù)據(jù)放入a,從文件讀取的數(shù)據(jù)放入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); } //從鍵盤輸入數(shù)據(jù) 并保存到數(shù)組a for(i=0; i<N; i++){ scanf("%d", &a[i]); } //將數(shù)組a的內(nèi)容寫入到文件 fwrite(a, size, N, fp); //將文件中的位置指針重新定位到文件開(kāi)頭 rewind(fp); //從文件讀取內(nèi)容并保存到數(shù)組b fread(b, size, N, fp); //在屏幕上顯示數(shù)組b的內(nèi)容 for(i=0; i<N; i++){ printf("%d ", b[i]); } printf("n"); fclose(fp); return 0;}

  運(yùn)行結(jié)果:

  23 409 500 100 222↙

  23 409 500 100 222

  fwrite()/fread() 函數(shù)直接操作字節(jié),建議使用二進(jìn)制方式打開(kāi)文件。請(qǐng)閱讀《C語(yǔ)言中文本文件與二進(jìn)制文件的區(qū)別》了解更多。

  打開(kāi) D:demo.txt,發(fā)現(xiàn)文件內(nèi)容根本無(wú)法閱讀。這是因?yàn)槲覀兪褂?quot;rb+"方式打開(kāi)文件,數(shù)據(jù)以二進(jìn)制形式寫入文件,一般無(wú)法閱讀。

  數(shù)據(jù)寫入完畢后,位置指針在文件的末尾,要想讀取數(shù)據(jù),必須將文件指針移動(dòng)到文件開(kāi)頭,這就是rewind(fp);的作用。更多關(guān)于rewind函數(shù)的內(nèi)容請(qǐng)點(diǎn)擊:C語(yǔ)言rewind函數(shù)。

  文件的后綴不一定是 .txt,它可以是任意的,你可以自己命名,例如 demo.ddd、demo.doc、demo.diy 等。

  【示例】從鍵盤輸入兩個(gè)學(xué)生數(shù)據(jù),寫入一個(gè)文件中,再讀出這兩個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。

  #include#define N 2struct stu{ char name[10]; //姓名 int num; //學(xué)號(hào) int age; //年齡 float score; //成績(jī)}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); } //從鍵盤輸入數(shù)據(jù) printf("Input data:n"); for(i=0; iname, &pa->num,&pa->age, &pa->score); } //將數(shù)組 boya 的數(shù)據(jù)寫入文件 fwrite(boya, sizeof(struct stu), N, fp); //將文件指針重置到文件開(kāi)頭 rewind(fp); //從文件讀取數(shù)據(jù)并保存到數(shù)據(jù) boyb fread(boyb, sizeof(struct stu), N, fp); //輸出數(shù)組 boyb 中的數(shù)據(jù) for(i=0; iname, pb->num, pb->age, pb->score); } fclose(fp); return 0;}

  運(yùn)行結(jié)果:

  Input data:

  Tom 2 15 90.5↙

  Hua 1 14 99↙

  Tom 2 15 90.500000

  Hua 1 14 99.000000

【C語(yǔ)言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼】相關(guān)文章:

C語(yǔ)言快速排序?qū)嵗a06-04

C語(yǔ)言插入排序算法及實(shí)例代碼12-05

C語(yǔ)言選擇排序算法及實(shí)例代碼11-25

C#數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的實(shí)例代碼12-04

C語(yǔ)言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”代碼(實(shí)例)03-02

C語(yǔ)言數(shù)組實(shí)例解析03-28

C#實(shí)現(xiàn)協(xié)同過(guò)濾算法的實(shí)例代碼11-30

php獲取新浪微博數(shù)據(jù)API的實(shí)例代碼11-16

C語(yǔ)言文件的創(chuàng)建與建立11-27

主站蜘蛛池模板: 保山市| 如东县| 文安县| 吉木乃县| 依兰县| 巴南区| 台东县| 庆安县| 巴青县| 澎湖县| 高邑县| 锡林浩特市| 讷河市| 婺源县| 桂阳县| 康乐县| 哈密市| 朝阳区| 禹城市| 阳信县| 永城市| 紫金县| 南宁市| 邵武市| 宝应县| 怀宁县| 徐汇区| 高淳县| 中阳县| 沁水县| 和龙市| 新平| 格尔木市| 吴忠市| 通山县| 东安县| 抚松县| 东丽区| 曲靖市| 湾仔区| 海南省|