日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]函數(shù)名:fgets 功能:從流中讀取一個(gè)字符串 用法:char *fgets(char *string,int n,FILE *stream); 形參注釋?zhuān)?*string:結(jié)果數(shù)據(jù)的首地址;n-1:一次讀入數(shù)據(jù)塊的長(zhǎng)度,其默認(rèn)值為1k,即1024;stream文件指針,指向一

函數(shù)名:fgets

功能:從流中讀取一個(gè)字符串

用法:char *fgets(char *string,int n,FILE *stream);

形參注釋?zhuān)?/P>

*string:結(jié)果數(shù)據(jù)的首地址;n-1:一次讀入數(shù)據(jù)塊的長(zhǎng)度,其默認(rèn)值為1k,即1024;stream文件指針,指向一個(gè)文件

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

fgets()用來(lái)從參數(shù)stream所指的文件內(nèi)讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行字符、讀到文件尾或是已讀了size-1個(gè)字符為止,最后會(huì)加上NULL作為字符串結(jié)束。

如果在未讀滿(mǎn)n-1個(gè)字符之時(shí),已讀到一個(gè)換行符或一個(gè)EOF(文件結(jié)束標(biāo)志),則結(jié)束本次讀操作,讀入的字符串中最后包含讀到的換行符。

示例:

#include <string.h>

#include <stdio.h>

int main(void)

{

FILE *stream; //FILE 是一種數(shù)據(jù)類(lèi)型,是管理文件流的一種結(jié)構(gòu)

char string[] = "This is a test";

char msg[20];

/* open a file for update */

stream = fopen("DUMMY.FIL", "w+");

/* write a string into the file */

fwrite(string, strlen(string), 1, stream);

/* seek to the start of the file */

fseek(stream, 0, SEEK_SET);

/* read a string from the file */

fgets(msg, strlen(string)+1, stream);

/* display the string */

printf("%s", msg);

fclose(stream);

return 0;

}

代碼分析:

操作成功時(shí)返回的是msg的值,如果碰到文件結(jié)束或錯(cuò)誤的時(shí)候,fgets返回NULL;因?yàn)檩斎氲倪^(guò)程中一般只會(huì)按下回車(chē),很少會(huì)是EOF的,所以不會(huì)是碰到文件結(jié)束,而錯(cuò)誤是當(dāng)你傳入msg是NULL的時(shí)候才會(huì)遇到,所以基本上是不可能返回NULL的。而且輸入超過(guò)了長(zhǎng)度n的時(shí)候,fgets會(huì)自動(dòng)截?cái)嗟?屬于操作成功。

函數(shù)名:gets

功能:從stdin流中讀取字符串,直至接受到換行符或EOF時(shí)停止,并將讀取的結(jié)果存放在str指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為null值,并由此來(lái)結(jié)束字符串。

示例:

#include"stdio.h"

void main()

{

char str1[5];

gets(str1);

printf("%sn",str1);

}

注意:本函數(shù)可以無(wú)限讀取,不會(huì)判斷上限,所以程序員應(yīng)該確保str的空間足夠大,以便在執(zhí)行讀操作時(shí)不發(fā)生溢出。

代碼分析:

用gets函數(shù)時(shí),編譯器會(huì)有報(bào)警提示,因?yàn)間ets函數(shù)不安全,沒(méi)有限制輸入緩沖區(qū)的大小,容易造成溢出。這就好像養(yǎng)金魚(yú),你投多少魚(yú)食它就吃多少,自己不知道控制,但它的胃容量是有上限的(默認(rèn)值),喂的太多金魚(yú)就會(huì)撐死(溢出)。

總結(jié):

1 盡量不使用gets

2 內(nèi)存越界是有問(wèn)題隱患,但并不是一定會(huì)體現(xiàn)出問(wèn)題,要看具體情況。



來(lái)源:miaomi2次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

為了提升設(shè)計(jì)效率和運(yùn)行安全性 ,對(duì)DL/T 834—2023《火力發(fā)電廠(chǎng)汽輪機(jī)防進(jìn)水和冷蒸汽導(dǎo)則》與DL/T 834—2003 《火力發(fā)電廠(chǎng)汽輪機(jī)防進(jìn)水和冷蒸汽導(dǎo)則》的設(shè)計(jì)、運(yùn)行和檢驗(yàn)及維護(hù)要求進(jìn)行了對(duì)比分析 , 總...

關(guān)鍵字: 標(biāo)準(zhǔn) 疏水 冷蒸汽 發(fā)電廠(chǎng)

在Linux環(huán)境下的C語(yǔ)言編程中,函數(shù)的可重入性(Reentrancy)是一個(gè)至關(guān)重要的概念。它直接關(guān)系到多線(xiàn)程或多任務(wù)環(huán)境下程序的穩(wěn)定性和可靠性。所謂可重入函數(shù),是指一個(gè)函數(shù)可以被多個(gè)線(xiàn)程或任務(wù)安全地調(diào)用,而不會(huì)導(dǎo)致數(shù)...

關(guān)鍵字: Linux 庫(kù)函數(shù)

電磁兼容(EMC)是指在同一電磁環(huán)境中,不同設(shè)備或系統(tǒng)能夠正常工作且互不干擾的狀態(tài)。在現(xiàn)代電子和通信領(lǐng)域,EMC是一個(gè)至關(guān)重要的概念,它不僅影響設(shè)備的性能,還關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和安全性。為了確保設(shè)備的EMC,各國(guó)都制...

關(guān)鍵字: 電磁兼容 EMC 標(biāo)準(zhǔn)

無(wú)線(xiàn)充電技術(shù),作為現(xiàn)代科技領(lǐng)域的一項(xiàng)創(chuàng)新,正逐步改變著我們的生活方式。從智能手機(jī)到電動(dòng)汽車(chē),無(wú)線(xiàn)充電的應(yīng)用場(chǎng)景日益廣泛,為用戶(hù)提供了前所未有的便捷性。然而,盡管無(wú)線(xiàn)充電技術(shù)發(fā)展迅速,其在標(biāo)準(zhǔn)和能效方面仍面臨諸多瓶頸,這些...

關(guān)鍵字: 無(wú)線(xiàn)充電 能效 標(biāo)準(zhǔn)

隨著無(wú)人機(jī)的普及,越來(lái)越多的人開(kāi)始使用無(wú)人機(jī)進(jìn)行各種飛行任務(wù),但是不當(dāng)?shù)氖褂脮?huì)給公共安全和社會(huì)秩序帶來(lái)潛在的風(fēng)險(xiǎn),因此對(duì)于無(wú)人機(jī)使用的規(guī)定也變得越來(lái)越嚴(yán)格。本文將介紹無(wú)人機(jī)使用的標(biāo)準(zhǔn)和規(guī)定,以幫助大家正確使用無(wú)人機(jī)。

關(guān)鍵字: 無(wú)人機(jī) 標(biāo)準(zhǔn) UAV

智能家居作為新興領(lǐng)域,逐漸走入了人們的生活。智能家居系統(tǒng)是利用先進(jìn)的計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通訊技術(shù)、智能云端控制、綜合布線(xiàn)技術(shù)、醫(yī)療電子技術(shù)依照人體工程學(xué)原理,融合個(gè)性需求,將與家居生活有關(guān)的各個(gè)子系統(tǒng)如安防、燈光控制、窗簾控...

關(guān)鍵字: 智能家居 標(biāo)準(zhǔn)

因?yàn)?G涵蓋內(nèi)容更豐富,上述三個(gè)5G專(zhuān)利池側(cè)重點(diǎn)也不同:Avanci側(cè)重汽車(chē)和物聯(lián)網(wǎng);Sisvel側(cè)重手機(jī)等終端領(lǐng)域;Alium側(cè)重?zé)o線(xiàn)接入網(wǎng)RAN。

關(guān)鍵字: 5G 標(biāo)準(zhǔn) 必要專(zhuān)利

為了保證航天型號(hào)元器件的固有質(zhì)量和使用質(zhì)量滿(mǎn)足航天工程的要求,需要制定一系列標(biāo)準(zhǔn)和文件,規(guī)范元器件的選擇、采購(gòu)和應(yīng)用。這一系列標(biāo)準(zhǔn)和文件按照其內(nèi)在聯(lián)系形成的科學(xué)有機(jī)整體就是元器件標(biāo)準(zhǔn)體系。

關(guān)鍵字: 電子 標(biāo)準(zhǔn)

ISO26262是汽車(chē)的一個(gè)安全性國(guó)際標(biāo)準(zhǔn)。目前我國(guó)也在積極參與中。是行業(yè)標(biāo)準(zhǔn)的一種。

關(guān)鍵字: iso26262 標(biāo)準(zhǔn)

這篇文章想分享筆者在嵌入式開(kāi)發(fā)過(guò)程中常用的庫(kù)函數(shù),他們的使用方法,使用場(chǎng)景,使用好處以及頭文件位置。1#include一般我在寫(xiě)C代碼的時(shí)候都會(huì)包含此頭文件,因?yàn)橐坏┌宋募?,你就可以暢快的使用bool數(shù)據(jù)類(lèi)型,而不...

關(guān)鍵字: 庫(kù)函數(shù)
關(guān)閉