久久午夜无码,国产中文资源,Chinese熟女熟妇2乱2,高清五码d一区

當(dāng)前位置:首頁 > 開發(fā)語言 > 正文

c語言中fread函數(shù)的用法,fread是什么函數(shù)

c語言中fread函數(shù)的用法,fread是什么函數(shù)

其實c語言中fread函數(shù)的用法的問題并不復(fù)雜,但是又很多的朋友都不太了解fread是什么函數(shù),因此呢,今天小編就來為大家分享c語言中fread函數(shù)的用法的一些知識,希...

其實c語言中fread函數(shù)的用法的問題并不復(fù)雜,但是又很多的朋友都不太了解fread是什么函數(shù),因此呢,今天小編就來為大家分享c語言中fread函數(shù)的用法的一些知識,希望可以幫助到大家,下面我們一起來看看這個問題的分析吧!

include和fread函數(shù)區(qū)別

include和fread是C語言中的兩個不同函數(shù),它們有以下區(qū)別:

功能:include是預(yù)處理指令,用于將一個頭文件的內(nèi)容包含到當(dāng)前源文件中。而fread是標(biāo)準(zhǔn)庫函數(shù),用于從指定的文件中讀取數(shù)據(jù)。

語法:include指令的語法為#include<stdio.h>,它不需要參數(shù)。而fread函數(shù)的語法為size_tfread(void*ptr,size_tsize,size_tcount,FILE*stream),它需要指定讀取數(shù)據(jù)的緩沖區(qū)、數(shù)據(jù)塊大小、數(shù)據(jù)塊數(shù)量和文件指針作為參數(shù)。

文件操作:include指令只是將頭文件的內(nèi)容復(fù)制到當(dāng)前源文件中,不涉及文件操作。而fread函數(shù)通過指定的文件指針進(jìn)行實際的文件讀取操作。

作用域:include指令作用于整個源文件,將頭文件的內(nèi)容直接插入到源文件中。而fread函數(shù)只影響其所在函數(shù)的作用域。

可移植性:include指令是C語言的標(biāo)準(zhǔn)化特性,在不同的編譯器和平臺上都得到支持。而fread函數(shù)依賴于標(biāo)準(zhǔn)庫的實現(xiàn),在不同的平臺和編譯器上可能有所差異。

綜上所述,include指令用于包含頭文件,不涉及實際的文件操作,而fread函數(shù)用于從文件中讀取數(shù)據(jù),具有更具體的文件操作功能。

fread判斷文件里的數(shù)組長度

使用fread函數(shù)讀取文件中的數(shù)組長度,可以通過以下步驟實現(xiàn):

打開文件并獲取文件指針。

使用fread函數(shù)讀取文件中的數(shù)據(jù)到一個緩沖區(qū)。

使用ftell函數(shù)獲取文件指針的當(dāng)前位置,即已讀取的字節(jié)數(shù)。

使用sizeof操作符獲取數(shù)組元素的大小。

將已讀取的字節(jié)數(shù)除以數(shù)組元素的大小,即可得到數(shù)組的長度。

注意,fread函數(shù)讀取的是二進(jìn)制數(shù)據(jù),因此需要根據(jù)實際情況解析數(shù)據(jù)內(nèi)容。

文件中的數(shù)據(jù)必須按照特定格式進(jìn)行存儲和讀取,以確保正確獲取數(shù)組長度。

C語言讀取文件中的數(shù)據(jù)

讀寫文件在編程里面應(yīng)該是用的最多也最基礎(chǔ)的工作了。但是,C語言中,文件讀寫方法有很多種,各種方法的使用場景區(qū)別甚大,到底日常工作中,我們什么時候該用哪種方法呢?還是說隨便抓一種用就可以?

這里就給大家分享一下C語言文件的各種方法:

在window環(huán)境下,文件分別兩種,一種為文本文件(用記事本可以打開的文件,如txt、xml、html、js等),一種為二進(jìn)制文件(如圖片、軟件、壓縮包等)

讀寫文本文件

首先創(chuàng)建一個File對象,這個利用到系統(tǒng)庫中的fopen()函數(shù),該函數(shù)返回一個File*類型的對象。

FILE*fopen(constchar*filename,constchar*mode);

第一個參數(shù)為:文件路徑;第二個參數(shù)為打開模式:這個是固定的,具體是什么意思大家可以自己去查一下,沒什么特別的,記住就好了。

1、文本文件讀寫

接下來我們讀寫一個文本文件,我新建一個test.txt文件并且讀取出內(nèi)容寫進(jìn)newtest.txt文件中,這里有兩組函數(shù)fgetc/fputc和fgets/fputs函數(shù),故名意意,fgetc是讀取出一個字符,而fgets是讀取一段字符串,fputc是讀寫入一個字符,fputs寫進(jìn)一段字符串。我們分別來看一下:

intmain(){ FILE*fpr=fopen("test.txt","r"); FILE*fpw=fopen("newtest.txt","w"); if(fpr&&fpw) { while(!feof(fpr)) { charc=(char)fgetc(fpr); cout<<c; fputc(c,fpw); } } fclose(fpr); fclose(fpw); system("pause"); return0;}

注意:

1、feof是判斷是否讀取到文件尾的函數(shù),此處不用EOF來作為讀寫結(jié)束條件是因為:函數(shù)如fgetc或getc返回EOF并不一定表示文件結(jié)束,當(dāng)讀取文件出錯時也會返回EOF,僅憑返回-1就認(rèn)為文件結(jié)束是錯誤的;正因為如此,我們需要feof()來判斷文件是否結(jié)束,當(dāng)然用feof()來判斷文件結(jié)束時也需要判斷讀取操作是否出錯,這時可以用ferror()來判斷,當(dāng)其為真時表示有錯誤發(fā)生。在實際的程序中,應(yīng)該每執(zhí)行一次文件操作,就用用ferror函數(shù)檢測是否出錯。

2、fgetc()返回的是int,如果要在屏幕上打印出字符的話需要轉(zhuǎn)換為char;

上面是一個字符一個字符的讀,下面一段一段的讀:

FILE*fpr=fopen("test.txt","r");FILE*fpw=fopen("newtest.txt","w");if(fpr&&fpw){ while(!feof(fpr)) { char*buff=newchar[1024]; char*s=fgets(buff,3,fpr); cout<<s; fputs(s,fpw); }}fclose(fpr);fclose(fpw);

這個方法個人不是很推薦,因為在使用過程中經(jīng)常會報錯,這里我如果將以此讀取的字符串長度由3改為2或者1就會報錯,這個我也搞不清為什么,如果有知道的朋友可以評論幫我解答一下;

讀寫二進(jìn)制文件

C語言讀寫二進(jìn)制文件通過庫函數(shù)fread和fwrite實現(xiàn):

size_tfread(void*buff,size_tsizeofElement,size_tcount,FILE*stream);

size_tfwrite(constvoid*ptr,size_tsizeofElement,size_tcount,FILE*stream);

參數(shù)解釋:buff:緩存區(qū)地址

sizeofElement:每次讀/寫的數(shù)據(jù)大小

count:要多去多個個sizeofElement大小的數(shù)據(jù)

stream:文件指針

現(xiàn)在我們來讀一張神仙姐姐的圖片test.ipg并且將讀取到的內(nèi)容寫進(jìn)newtest.jpg,然后查看是否能打開。

intmain(){FILE*fpr=fopen("test.jpg","rb");FILE*fpw=fopen("newtest.jpg","wb");char*buff=newchar[50];intlen=50;while(len==50){len=fread(buff,sizeof(char),50,fpr);fwrite(buff,sizeof(char),len,fpw);}fclose(fpr);fclose(fpw);system("pause");return0;}

運行結(jié)果,打開newtest.jpg,結(jié)果完美呈現(xiàn)神仙姐姐。

注意以下幾點:

1、文件打開方式,不管是讀還是寫都需要在后面加b,b就是binary二進(jìn)制的意思,所以這里打開方式是“日本”和“wb”;

2、寫入fwrite中的count一定要注意,你的緩存區(qū)存了多大的內(nèi)容這里就寫多大的內(nèi)容,不然會導(dǎo)致文件損壞,因為我定的是每次讀取50個char大小的內(nèi)容,但是文件大小不可能是50的整數(shù)啊,最后一次讀取的話他肯定會小于50,并且大小不能超過緩存區(qū)的大?。?/p>

文件內(nèi)部位置指針

在打開任何文件的時候,都會有一個文件內(nèi)部位置指針。為什么要在這里介紹這個呢?我們大部分讀取文件的時候都是不用去管他的,因為我們基本很少有讀取固定位置開始固定長度的需求,都是從開始一直讀取到文件結(jié)束。

其實我們上面用到的那么多函數(shù),位置指針在文件被打開的時候位置指針是在零為,每讀取一次這個指針就會往后面移動你讀取的數(shù)據(jù)兩個距離。

這里有三個函數(shù):

1、intfseek(FILE*stream,longintoffset,intwhere)這個函數(shù)的作用是將文件位置指針從指定位置(where:系統(tǒng)有定義三個宏SEEK_SET:文件頭、SEEK_CUR當(dāng)前指針位置、SEEK_END文件尾,當(dāng)然你也可以自己指定位置,比如100、50這樣)移動個offset個位置(正數(shù)往后移,負(fù)數(shù)往前移);

2、voidrewind(FILE*stream)這個很簡單,將位置指針指向文件開頭;

3、longintftell(FILE*stream)這個也很簡答,告訴你當(dāng)前位置指針的位置(相對于文件頭);

這可以干嘛呢?最實用的,當(dāng)然是快速的獲取文件長度啊:

我們只需要用fseek將指針移動到文件尾,再用ftell求出當(dāng)前指針位置就是了:

fseek(fpr,OL,SEEK_END);注意這里的offset一定要給0

ftell(fpr);

C語言中出現(xiàn)Unhandled exception

1、你把文件流指針關(guān)閉了,就不能再次使用了,除非你用fopen打開2、建議你將malloc與free成對使用3、C語言存在fread函數(shù),不需要你自己去封裝函數(shù)我愚鈍,改不了你的代碼,提一點個人觀點

c語言中進(jìn)行文件讀寫的函數(shù)是

C語言對文件進(jìn)行讀取之前需要先打開文件,然后再進(jìn)行讀寫,讀寫完之后關(guān)閉文件。可以使用兩組函數(shù)實現(xiàn):

一、C語言庫函數(shù)打開文件:fopen讀寫(一般對應(yīng)成對使用):fgetc---fputcfgets---fputsfread---fwrite關(guān)閉文件:fclose

二、Linux系統(tǒng)函數(shù)打開文件:open讀寫(一般對應(yīng)成對使用):read---write關(guān)閉文件:close

關(guān)于本次c語言中fread函數(shù)的用法和fread是什么函數(shù)的問題分享到這里就結(jié)束了,如果解決了您的問題,我們非常高興。

女人给男人口的视频网站| 亚洲欧美性综合在线| 在线看国产成人精品网| 农村妇女在线播放AV| 欧美精品久久久久久久影视| AV日韩在线播放| 欧美亚洲一卡二卡| 插插网免费| 亚洲AV综合久久九九| 久久人妻精品色| 国产极品粉嫩馒头一线天免费| 色综合久久图片网调教网久久久SS欧美日韩国产系列 | 国产情侣黄色精品网站大全| AV 尤物看片片| 日韩国产精品欧美| 人妻出轨中文字幕不卡一区| av丝袜无码一区在线| 午夜综合一区| 亚洲人人澡| 免费看精品久久一级高潮毛片| 无码A级免费黄色视频| AV无码播放一级毛片免费野外| 国产一区二区偷情| 婷婷五月综合基| 人妻精品中文字幕无码毛片| 带VR的成人网站在线观看| 成人鲁鲁免费久久久| 国产精品任我爽爆在线播放,| 亚洲欧洲久久无码AV| 亚洲av女优在线观看| 欧美亚洲日韩精品合集| 天天射天天干| 公和我做好爽在线观看无码| 少妇影院y1111| 丁香五月六月婷婷欧美| 亚洲av高清在线观看一区二区 | 色综合站在线| 超碰日本爆乳中文字幕| 玖玖精品视频| 日韩黄色一级电影欧美| 激情 中文字幕|