久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      fread函數(shù) C語(yǔ)言的二進(jìn)制IO函數(shù)fread()和fwrite()

      fread是一個(gè)函數(shù),是計(jì)算機(jī)程序中從一個(gè)文件流中讀數(shù)據(jù),最多讀取count個(gè)元素,每個(gè)元素size字節(jié),如果調(diào)用成功返回實(shí)際讀取到的元素個(gè)數(shù),如果不成功返回0。我們一起來(lái)了解一下C語(yǔ)言的二進(jìn)制IO函數(shù)fread()和fwrite()。

      fread函數(shù) C語(yǔ)言的二進(jìn)制IO函數(shù)fread()和fwrite()

      fread函數(shù)——C語(yǔ)言的二進(jìn)制IO函數(shù)fread()和fwrite()

      之前的fprintf()、fscanf()、fgets()和fputs()等標(biāo)準(zhǔn)I/O都是面向文本的,用于處理字符和字符串。

      例如,下面的代碼:

      doublenum=1./3;

      fprintf(fp,”%f”,num);

      把num存儲(chǔ)為8個(gè)字符;0.333333。使用%0.2f轉(zhuǎn)換說(shuō)明將其存儲(chǔ)為4個(gè)字符:0.33,用%0.2f轉(zhuǎn)換說(shuō)明將其存儲(chǔ)為14個(gè)字符:0.33333333333。改變轉(zhuǎn)換說(shuō)明將改變存儲(chǔ)該值所需的空間數(shù)量,也會(huì)導(dǎo)致存儲(chǔ)不同的值。把num存儲(chǔ)為0.33后,讀取文件就無(wú)法將其恢復(fù)為更高的精度。一般而言,fprintf()把數(shù)值轉(zhuǎn)換為字符數(shù)據(jù),這種轉(zhuǎn)換可能會(huì)改變值。

      為保證數(shù)值存儲(chǔ)前后一致,最精確的做法是使用與計(jì)算機(jī)相同的位組合來(lái)存儲(chǔ)。因此,double類型的值,應(yīng)該存儲(chǔ)在一個(gè)double大小的單元中。如果以程序所用的表示法把數(shù)據(jù)儲(chǔ)存在文件中,則稱為二進(jìn)制形式儲(chǔ)存數(shù)據(jù)。不存在從數(shù)值形式到字符串的轉(zhuǎn)換過(guò)程。對(duì)于標(biāo)準(zhǔn)I/O,fread()和fwrite()函數(shù)用于二進(jìn)制形式處理數(shù)據(jù)(如下圖所示)。

      實(shí)際上所有的數(shù)據(jù)都是以二進(jìn)制形式儲(chǔ)存的,甚至連字符都以字符碼的二進(jìn)制表示來(lái)儲(chǔ)存。如果文件中的所有數(shù)據(jù)都被解釋成字符碼,則稱為該文件包含文本數(shù)據(jù)。如果大部分或所有數(shù)據(jù)被解釋成二進(jìn)制形式的數(shù)值數(shù)據(jù),則稱該文件包含二進(jìn)制數(shù)據(jù)(另外,用數(shù)據(jù)表示機(jī)器語(yǔ)言指令的文件都是二進(jìn)制文件)。

      二進(jìn)制和文本的用法很容易混淆。ANSIC和許多操作系統(tǒng)都同時(shí)識(shí)別這兩種文件格式,能以二進(jìn)制數(shù)據(jù)或文本數(shù)據(jù)形式存儲(chǔ)或讀取信息??梢杂枚M(jìn)制模式打開(kāi)文本格式的文件,可以把文本儲(chǔ)存在二進(jìn)制形式的文件中。可以調(diào)用getc()拷貝包含二進(jìn)制數(shù)據(jù)的文件。然而,一般而言,用二進(jìn)制模式在二進(jìn)制格式中存儲(chǔ)二進(jìn)制數(shù)據(jù)。類似地,最常用的還是以文本格式打開(kāi)文本文件中的文本數(shù)據(jù)(通常文字處理器生產(chǎn)的文件都是二進(jìn)制文件,因?yàn)檫@些文件中包含了大量的非文本信息,如字體和格式等)。

      fread()和fwrite()函數(shù)的用法

      頭文件:#include

      size_tfread(void*buffer,size_tsize,size_tcount,FILE*stream);

      【參數(shù)】buffer為接收數(shù)據(jù)的地址,size為一個(gè)單元的大小,count為單元個(gè)數(shù),stream為文件流。

      fread()函數(shù)每次從stream中最多讀取count個(gè)單元,每個(gè)單元大小為size個(gè)字節(jié),將讀取的數(shù)據(jù)放到buffer;文件流的位置指針后移size*count字節(jié)。

      【返回值】返回實(shí)際讀取的單元個(gè)數(shù)。如果小于count,則可能文件結(jié)束或讀取出錯(cuò);可以用ferror()檢測(cè)是否讀取出錯(cuò),用feof()函數(shù)檢測(cè)是否到達(dá)文件結(jié)尾。如果size或count為0,則返回0。

      與fread()相對(duì)應(yīng)的函數(shù)為fwrite(),fread()和fwrite()一般用于二進(jìn)制文件的輸入輸出,ASCII文件還是不要考慮了。

      頭文件:#include

      fwrite()函數(shù)以二進(jìn)制方式向文件流中寫(xiě)入數(shù)據(jù),其原型為:

      size_tfwrite(void*buffer,size_tsize,size_tcount,FILE*stream);

      【參數(shù)】buffer為數(shù)據(jù)源地址,size為每個(gè)單元的字節(jié)數(shù),count為單元個(gè)數(shù),stream為文件流指針。

      fwrite()函數(shù)每次向stream中寫(xiě)入count個(gè)單元,每個(gè)單元大小為size個(gè)字節(jié);文件流的位置指針后移size*count字節(jié)。

      【返回值】返回成功寫(xiě)入的單元個(gè)數(shù)。如果小于count,則說(shuō)明發(fā)生了錯(cuò)誤,文件流錯(cuò)誤標(biāo)志位將被設(shè)置,隨后可以通過(guò)ferror()函數(shù)判斷。

      如果size或count的值為0,則返回值為0,并且文件流的位置指針保持不變。與fwrite()相對(duì)應(yīng)的函數(shù)為fread(),fread()和fwrite()一般用于二進(jìn)制文件的輸入輸出。如果大家還想了解更多與之有關(guān)的信息,歡迎關(guān)注我們優(yōu)詞網(wǎng)的官網(wǎng)。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)