站長資訊網
        最全最豐富的資訊網站

        fread函數 C語言的二進制IO函數fread()和fwrite()

        fread是一個函數,是計算機程序中從一個文件流中讀數據,最多讀取count個元素,每個元素size字節,如果調用成功返回實際讀取到的元素個數,如果不成功返回0。我們一起來了解一下C語言的二進制IO函數fread()和fwrite()。

        fread函數 C語言的二進制IO函數fread()和fwrite()

        fread函數——C語言的二進制IO函數fread()和fwrite()

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

        例如,下面的代碼:

        doublenum=1./3;

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

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

        為保證數值存儲前后一致,最精確的做法是使用與計算機相同的位組合來存儲。因此,double類型的值,應該存儲在一個double大小的單元中。如果以程序所用的表示法把數據儲存在文件中,則稱為二進制形式儲存數據。不存在從數值形式到字符串的轉換過程。對于標準I/O,fread()和fwrite()函數用于二進制形式處理數據(如下圖所示)。

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

        二進制和文本的用法很容易混淆。ANSIC和許多操作系統都同時識別這兩種文件格式,能以二進制數據或文本數據形式存儲或讀取信息。可以用二進制模式打開文本格式的文件,可以把文本儲存在二進制形式的文件中??梢哉{用getc()拷貝包含二進制數據的文件。然而,一般而言,用二進制模式在二進制格式中存儲二進制數據。類似地,最常用的還是以文本格式打開文本文件中的文本數據(通常文字處理器生產的文件都是二進制文件,因為這些文件中包含了大量的非文本信息,如字體和格式等)。

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

        頭文件:#include

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

        【參數】buffer為接收數據的地址,size為一個單元的大小,count為單元個數,stream為文件流。

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

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

        與fread()相對應的函數為fwrite(),fread()和fwrite()一般用于二進制文件的輸入輸出,ASCII文件還是不要考慮了。

        頭文件:#include

        fwrite()函數以二進制方式向文件流中寫入數據,其原型為:

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

        【參數】buffer為數據源地址,size為每個單元的字節數,count為單元個數,stream為文件流指針。

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

        【返回值】返回成功寫入的單元個數。如果小于count,則說明發生了錯誤,文件流錯誤標志位將被設置,隨后可以通過ferror()函數判斷。

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品午夜无码AV天美传媒| 精品偷自拍另类在线观看丰满白嫩大屁股ass | 亚洲热线99精品视频| 国产精品国产三级在线专区| 国产精品天天影视久久综合网| 麻豆aⅴ精品无码一区二区| 久久久亚洲精品蜜桃臀| 国产精品va在线观看无码| 四虎精品成人免费观看| 99热亚洲色精品国产88| 嫩草伊人久久精品少妇AV| 无码人妻精品一区二区三区久久久 | 久久精品免费大片国产大片| 99热亚洲精品6码| 91精品啪在线观看国产电影| 久久精品成人免费看| 国产精品中文字幕在线观看| 2022国产精品福利在线观看| 久久精品一本到99热免费| 亚洲国产精品特色大片观看完整版| 午夜精品久久久久久| 日韩精品欧美亚洲| 亚洲精品久久久www| 四虎影视永久在线精品| 麻豆精品| 亚洲欧美日韩国产精品| 一区二区日韩国产精品| 中文国产成人精品久久亚洲精品AⅤ无码精品| 免费人妻精品一区二区三区| 乱人伦人妻精品一区二区| 久久99精品国产麻豆蜜芽| 日韩三级精品| 夜夜爽一区二区三区精品| 亚洲精品无码永久在线观看你懂的| 亚洲无码精品浪潮| 亚洲精品高清国产一线久久| 人妻精品久久久久中文字幕一冢本| 久久精品人成免费| 99国产精品一区二区| 青青草国产精品| 国产网红主播无码精品|