欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C語(yǔ)言技能提升系列文章(五)文件訪(fǎng)問(wèn)

https://m.toutiaocdn.com/i6866459131956429324/?app=news_article&timestamp=1598779013&use_new_style=1&req_id=202008301716530101300361592955F36C&group_id=6866459131956429324 


大家好,今天和大家聊一聊C語(yǔ)言的文件操作。

C語(yǔ)言中,標準庫函數提供的文件操作API的聲明,存放在stdio.h文件中。它是C語(yǔ)言標準庫的一部分,在支持C語(yǔ)言的平臺上都可以使用,也就不需要擔心可移植性的問(wèn)題了。

在C語(yǔ)言標準庫中,I/O操作的對象是一個(gè)叫做“流(stream)”的抽象概念。你可以把它想象成雙排水管,一個(gè)進(jìn)水,另外一個(gè)出水,而水就是我們操作的數據。

既然是水管,它的里面就會(huì )有一些還沒(méi)流干凈的水,這些沒(méi)流干凈的水就是系統緩存的一些數據。這些緩存的目的是節省CPU的資源并提高系統的性能。系統會(huì )把幾次寫(xiě)入的數據攢在一起,數據的大小達到了預先設定的上限,系統就會(huì )一次性把它們寫(xiě)入到硬件中去。讀取數據時(shí),系統讀取的數據范圍會(huì )比用戶(hù)要求的更大一些,這樣,用戶(hù)下一次要讀取的數據如果在上一次的緩存中,系統就不需要再去訪(fǎng)問(wèn)硬件了。

// FILE *fopen(const char *filename, const char *mode);//// fopen 函數按照指定的文件路徑和模式打開(kāi)文件,會(huì )在內部創(chuàng )建一個(gè)文件對象,并返回這個(gè)對象的指針// filename : 可以是文件的絕對路徑,也可以是相對路徑// mode : 這個(gè)參數比較靈活, // |-----------------------------------------------------------------------------------------------------|// |'r' | 以只可以讀取的模式打開(kāi)一個(gè)文件,文件必須已存在。 |// |-------|----------------------------------------------------------------------------------------------|// |'w' | 創(chuàng )建一個(gè)空白文件,用來(lái)寫(xiě)入。如果文件已經(jīng)存在,內容會(huì )被清除掉。|// |-------|----------------------------------------------------------------------------------------------|// |'a' | 打開(kāi)一個(gè)文件并在文件的最后追加內容。 |// | | 重定位操作(fseek, fsetpos, rewind)在這種模式下無(wú)效。 |// | | 如果不存在指定的文件,系統會(huì )新建這個(gè)文件。 |// |-------|----------------------------------------------------------------------------------------------|// |'r+' | 以可讀寫(xiě)的模式打開(kāi)一個(gè)文件,文件必須已經(jīng)存在。 |// |-------|----------------------------------------------------------------------------------------------|// |'w+' | 以可讀寫(xiě)的模式創(chuàng )建一個(gè)空白文件,文件如果存在,內容會(huì )被清除掉。|// |-------|----------------------------------------------------------------------------------------------|// |'a+' | 以追加并可讀的模式打開(kāi)一個(gè)文件。 |// | | 重定位操作(fseek, fsetpos, rewind)會(huì )影響下一次的讀操作。 |// | | 但是,寫(xiě)操作會(huì )把定位器移動(dòng)到文件末尾。 |// | | 如果不存在指定的文件,系統會(huì )新建這個(gè)文件。 |// |--------------------------------------------------------------------------------------------------- --|// 上面的說(shuō)明是針對文本文件的,如果是讀寫(xiě)二進(jìn)制文件,只要再加個(gè)'b'就行了,例如:'ab+'// 錯誤時(shí)返回值為NULL#include <stdio.h>int main (){ FILE * pFile; pFile = fopen ('myfile.txt','w'); if (pFile!=NULL) { fputs ('fopen example',pFile); fclose (pFile); } return 0;}// FILE * freopen ( const char * filename, const char * mode, FILE * stream );// 這個(gè)API有兩種行為:// 1. 如果filename為空,它就改變stream的mode。// 2. 如果filename不為空,那么就打開(kāi)這個(gè)文件,并和stream結合起來(lái)。// 如果函數執行成功,就返回stream參數。#include <stdio.h>int main (){ freopen ('myfile.txt','w',stdout); printf ('This sentence is redirected to a file.'); fclose (stdout); return 0;}
//   FILE * freopen ( const char * filename, const char * mode, FILE * stream );//   這個(gè)API有兩種行為://   1. 如果filename為空,它就改變stream的mode。//   2. 如果filename不為空,那么就打開(kāi)這個(gè)文件,并和stream結合起來(lái)。//   如果函數執行成功,就返回stream參數。#include <stdio.h>int main (){  freopen ('myfile.txt','w',stdout);  printf ('This sentence is redirected to a file.');  fclose (stdout);  return 0;}
// void setbuf ( FILE * stream, char * buffer );// 這個(gè)API用來(lái)設置文件流的緩存,調用時(shí)機是打開(kāi)文件后,讀寫(xiě)操作前。// 系統默認緩存的大小至少是BUFSIZ, 這個(gè)宏由系統定義。// 如果buffer是NULL,則代表不對這個(gè)流使用緩存,所有的讀寫(xiě)都立刻反映到硬件上。/* setbuf example */#include <stdio.h>int main (){ char buffer[BUFSIZ]; FILE *pFile1, *pFile2; pFile1=fopen ('myfile1.txt','w'); pFile2=fopen ('myfile2.txt','a'); setbuf ( pFile1 , buffer ); fputs ('This is sent to a buffered stream',pFile1); fflush (pFile1); setbuf ( pFile2 , NULL ); fputs ('This is sent to an unbuffered stream',pFile2); fclose (pFile1); fclose (pFile2); return 0;}
//   int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );//   這個(gè)API可以為stream設置緩存并設置緩存的大小和模式。//   調用時(shí)機和setbuf一樣。//   如果buffer為NULL,系統會(huì )分配一塊大小為size的緩存。//   關(guān)于mode,可以是以下取值://   -------------------------------------------------------------------------------------------------------------//   |   _IOFBF |完整緩存,默認模式                                                                                        |//   |------------------------------------------------------------------------------------------------------------//   |   _IOLBF| 行緩存,輸出時(shí),每當遇到換行符,系統將緩存寫(xiě)入硬件并清空緩存。|//   |                  |  輸入時(shí),系統每次讀入一行數據。                                                               |//   |-------------------------------------------------------------------------------------------------------------//   |   _IONBF| 無(wú)緩存模式                                                                                                        |//   |-------------------------------------------------------------------------------------------------------------#include <stdio.h>int main (){  FILE *pFile;  pFile=fopen ('myfile.txt','w');  setvbuf ( pFile , NULL , _IOFBF , 1024 );  // File operations here  fclose (pFile);  return 0;}
// int fflush ( FILE * stream );// 當我們想要把緩存中的數據立刻寫(xiě)入硬件中時(shí),可以調用這個(gè)API。// 調用fclose和freopen也有同樣的效果#include <stdio.h>char mybuffer[80];int main(){ FILE * pFile; pFile = fopen ('example.txt','r+'); if (pFile == NULL) perror ('Error opening file'); else { fputs ('test',pFile); fflush (pFile); // flushing or repositioning required fgets (mybuffer,80,pFile); puts (mybuffer); fclose (pFile); return 0; }}
//   int fclose ( FILE * stream );//   當我們完成了所有的讀寫(xiě)操作,別忘了調用這個(gè)API把文件流關(guān)閉。#include <stdio.h>int main (){  FILE * pFile;  pFile = fopen ('myfile.txt','wt');  fprintf (pFile, 'fclose example');  fclose (pFile);  return 0;}

本次的內容就到這里了,希望對大家有所幫助。如果覺(jué)得感興趣的話(huà),可以點(diǎn)贊加關(guān)注。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
轉載:MFC文件操作,很全面
C語(yǔ)言文件操作之----文件的讀寫(xiě)
C語(yǔ)言快速入門(mén)系列(8)
C語(yǔ)言文件操作函數大全(超詳細)
C語(yǔ)言文件操作函數大全
第十三章 文 件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久