真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

fgets(),fscanf(),fprintf()

  功能

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站制作、成都網(wǎng)站建設(shè)負(fù)責(zé)任的成都網(wǎng)站制作公司!

      從文件結(jié)構(gòu)體指針stream中讀取數(shù)據(jù),每次讀取一行。讀取的數(shù)據(jù)保存在buf指向的字符數(shù)組中,每次最多讀取bufsize-1個(gè)字符(第bufsize個(gè)字符賦'\0'),如果文件中的該行,不足bufsize個(gè)字符,則讀完該行就結(jié)束。如若該行(包括最后一個(gè)換行符)的字符數(shù)超過(guò)bufsize-1,則fgets只返回一個(gè)不完整的行,但是,緩沖區(qū)總是以NULL字符結(jié)尾,對(duì)fgets的下一次調(diào)用會(huì)繼續(xù)讀該行。函數(shù)成功將返回buf,失敗或讀到文件結(jié)尾返回NULL。因此我們不能直接通過(guò)fgets的返回值來(lái)判斷函數(shù)是否是出錯(cuò)而終止的,應(yīng)該借助feof函數(shù)或者ferror函數(shù)來(lái)判斷

    函數(shù)原型

char *fgets(char *buf, int bufsize, FILE *stream);   

     *buf:字符型指針,指向用來(lái)存儲(chǔ)所得數(shù)據(jù)的地址。

bufsize: 整型數(shù)據(jù),指明存儲(chǔ)數(shù)據(jù)的大小。

*stream: 文件結(jié)構(gòu)體指針,將要讀取的文件流。

stream文件流指針體指向文件內(nèi)容地址的偏移原則

如果使用fgets()讀取某個(gè)文件,第一次讀取的bufsize為5,而文件的第一行有10個(gè)字符(算上'\n'),那么讀取文件的指針會(huì)偏移至當(dāng)前讀取完的這個(gè)字符之后的位置。也就是第二次再用fgets()讀取文件的時(shí)候,則會(huì)繼續(xù)讀取其后的字符。而,如果使用fgets() 讀取文件的時(shí)候bufsize大于該行的字符總數(shù)加2(多出來(lái)的兩個(gè),一個(gè)保存文件本身的'\n'換行,一個(gè)保存字符串本身的結(jié)束標(biāo)識(shí)'\0'),文件并不會(huì)繼續(xù)讀下去,僅僅只是這一行讀取完,隨后指向文件的指針會(huì)自動(dòng)偏移至下一行。

例子

如果一個(gè)文件的當(dāng)前位置的文本如下

Love, I Have

Since you can do it.

如果用fgets(str1,6,file1);去讀取

則執(zhí)行后str1 = "Love," ,讀取了6-1=5個(gè)字符

這個(gè)時(shí)候再執(zhí)行fgets(str1,20,file1)則執(zhí)行后str1 = " I Have\n"

而如果

fgets(str1,23,file1);

則執(zhí)行str1="Love ,I Have",讀取了一行(包括行尾的'\n',并自動(dòng)加上字符串結(jié)束符'\0'),當(dāng)前文件位置移至下一行,雖然23大于當(dāng)前行上字符總和,可是不會(huì)繼續(xù)到下一行。而下一次調(diào)用fgets()繼續(xù)讀取的時(shí)候是從下一行開(kāi)始讀。

從 handle 指向的文件中讀取一行并返回長(zhǎng)度最多為 length - 1 字節(jié)的字符串。碰到換行符(包括在返回值中)、EOF 或者已經(jīng)讀取了 length - 1 字節(jié)后停止(看先碰到那一種情況)。如果沒(méi)有指定 length,則默認(rèn)為 1K,或者說(shuō) 1024 字節(jié)。

出錯(cuò)時(shí)返回 FALSE。

②fscanf() 

功 能:

從一個(gè)流中執(zhí)行格式化輸入,fscanf遇到空格和換行時(shí)結(jié)束,注意空格時(shí)也結(jié)束。這與fgets有區(qū)別,fgets遇到空格不結(jié)束。

用 法: int fscanf(FILE *stream, char *format,[argument...]);

int fscanf(文件指針,格式字符串,輸入列表);

   

常用基本參數(shù)對(duì)照:

%d:讀入一個(gè)十進(jìn)制整數(shù).

%i :讀入十進(jìn)制,八進(jìn)制,十六進(jìn)制整數(shù),與%d類似,但是在編譯時(shí)通過(guò)數(shù)據(jù)前置來(lái)區(qū)分進(jìn)制,如加入“0x”則是十六進(jìn)制,加入“0”則為八進(jìn)制。例如串“031”使用%d時(shí)會(huì)被算作31,但是使用%i時(shí)會(huì)算作25.

%u:讀入一個(gè)無(wú)符號(hào)十進(jìn)制整數(shù).

%f %F %g %G : 用來(lái)輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入.

%x %X: 讀入十六進(jìn)制整數(shù).

%o': 讀入八進(jìn)制整數(shù).

%s : 讀入一個(gè)字符串,遇空格結(jié)束。

%c : 讀入一個(gè)字符。無(wú)法讀入空值??崭窨梢员蛔x入。

fprintf()

fprintf是C/C++中的一個(gè)格式化寫(xiě)-庫(kù)函數(shù),位于頭文件中,其作用是格式化輸出到一個(gè)流/文件中;函數(shù)原型為int fprintf( FILE *stream, const char *format, [ argument ]...),fprintf()函數(shù)根據(jù)指定的格式(format)向輸出流(stream)寫(xiě)入數(shù)據(jù)(argument)。

2.fprintf(stdout,“hello world\n”)


  


網(wǎng)站名稱:fgets(),fscanf(),fprintf()
地址分享:http://weahome.cn/article/geiogh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部