日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言库函数fgets,C语言 标准I/O库函数 fgets 使用心得

發(fā)布時(shí)間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言库函数fgets,C语言 标准I/O库函数 fgets 使用心得 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

char *fgets(char *s, int n, FILE *stream);

參數(shù)說(shuō)明:

s --

指定存放所讀取的數(shù)據(jù)的位置

n -- 指定所讀取數(shù)據(jù)的最大長(zhǎng)度(這個(gè)最大長(zhǎng)度包括了字符串結(jié)束符 \0

所占據(jù)的存儲(chǔ)空間,因此,實(shí)際最大讀取的有效字符數(shù)是 n - 1)

stream --

數(shù)據(jù)源,是一個(gè)文件指針

fgets

函數(shù)用于從“輸入”字符串中讀取指定長(zhǎng)度的字符串。這個(gè)“輸入”字符串既可以是通過(guò)fopen等開(kāi)啟的文件流,也可以是直接從鍵盤(pán)鍵入的

stdin。通俗點(diǎn)說(shuō)就是,它既可以從一個(gè)文本文件中一行、一行地(當(dāng)然,還需要循環(huán)控制語(yǔ)句的配合)讀取字符串,又可以直接讀取從終端鍵入的字符串。

結(jié)合函數(shù)原型中的參數(shù)來(lái)解釋一下這個(gè)函數(shù)的用途:

從文件流(文件指針 stream)或標(biāo)準(zhǔn)輸入流(stdin)中最多讀取 n

- 1 個(gè)字符,并將它們存儲(chǔ)到以 s 為起始地址的內(nèi)存空間里。

fgets 函數(shù)將在以下情況下,停止讀取:

1、在讀取過(guò)程中,遇到換行符 \n

2、在讀取過(guò)程中,遇到EOF

3、在讀取過(guò)程中,讀取的字符數(shù)達(dá)到最大限制(已經(jīng)讀取了 n - 1 個(gè))

如果函數(shù)執(zhí)行成功,則返回 s,否則返回 NULL。

fgets 在成功讀取字符后,讀取的字符串內(nèi)容以及當(dāng)前指針?biāo)幍臓顟B(tài)如下:

strA:目標(biāo)字符串(如果數(shù)據(jù)源是文本流,則為 當(dāng)前行)

strB:讀取到的字符串內(nèi)容

LEN:函數(shù)調(diào)用時(shí)指定的最大讀取字符數(shù)

情況一:當(dāng) strA 的長(zhǎng)度?大于?LEN?時(shí)

strB 為:從?strA?開(kāi)始處獲取到的 LEN?- 1 個(gè)字符

指針狀態(tài):指針偏移至當(dāng)前讀取完的這個(gè)字符之后的位置

例如:

strA?長(zhǎng)度為10,LEN 為?5,此時(shí) strB?的內(nèi)容為 strA?的前4個(gè)(取

LEN?- 1 個(gè))字符,指針指向 strA 的第5個(gè)字符處。

當(dāng)下一次調(diào)用 fgets 函數(shù)時(shí),會(huì)從 strA 的第5個(gè)字符開(kāi)始讀取。

情況二:當(dāng) strA + 2(一個(gè)字符長(zhǎng)度用于存儲(chǔ)在終端鍵入回車(chē)后 or strA 自身(行尾,如果是文本流)的換行符

\n,另一個(gè)字符長(zhǎng)度用于存儲(chǔ)字符串本身的結(jié)束標(biāo)識(shí) \0)?的長(zhǎng)度?小于?LEN?時(shí)

strB 為:strA + 行尾或終端鍵入回車(chē)后的換行符 \n,以及自動(dòng)追加的字符串結(jié)束符 \0

指針狀態(tài):指針偏移至下一行

例如:

strA?長(zhǎng)度為10,LEN 為 15,此時(shí)?strB?的內(nèi)容為?strA\n\0。

fgets 函數(shù)的優(yōu)點(diǎn)是:

1、讀取到的換行符被保存到讀取結(jié)果中

2、操作的數(shù)據(jù)源不僅限于標(biāo)準(zhǔn)輸入流 stdin

3、允許指定讀取字符串的最大長(zhǎng)度,有效避免了緩沖區(qū)溢出的問(wèn)題。

BTW:strlen() 的計(jì)算結(jié)果,是不包括結(jié)束符 \0 的~

原文:http://www.cnblogs.com/MyRobotDream/p/3548567.html

總結(jié)

以上是生活随笔為你收集整理的c语言库函数fgets,C语言 标准I/O库函数 fgets 使用心得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。